紫苏水釉吧 关注:4贴子:143
  • 2回复贴,共1

GM脚本学习经验小结之如何让addEventListener

只看楼主收藏回复

这些天,在学习写GM脚本,感触良多,总结了一些心得,其中印象最深刻的,莫过于为新建元素添加事件监听了。
由于GM的运行是在一个单独的空间内,此空间在页面载入后才实现。所以,GM所定义的函数,与页面头部<head></head>内所定义的函数并不相同,不能被页面元素所调用。
而使用createElement()+appendChild()创建的元素,在创建动作完成后,也属于页面元素,不能直接调用GM自定义函数。如果直接使用元素的onclick属性或setAttribute("onclick",XXX)尝试调用,会在事件触发时得到一个undefined。
这时,需要使用addEventListener,才能调用自定义函数。
然而,addEventListener所调用函数,不能带参数,否则在元素创建时,它所调用函数就要被执行,而不是等待事件触发才执行。这个比较崩溃。
但有时候,某些参数一定要传递,怎么办呢?
http://g.mozest.com/thread-31048-1-1


IP属地:江苏来自iPad1楼2013-07-08 16:43回复
    deleteTaskk = document.createElement("a");
    ii="3";
    color="red"
    deleteTaskk.setAttribute("moto", ii);
    deleteTaskk.setAttribute("color", color);
    deleteTaskk.addEventListener("click", deleteTaskCookie, false);
    document.appendChild(deleteTaskk);
    function deleteTaskCookie(e){//e是事件对象,使用e.target既定义对象,又可以得到触发本事件的元素。
    mycase=e.target
    ii=mycase.getAttribute("moto");
    color=mycase.getAttribute("color");
    .....................
    }


    IP属地:江苏来自iPad2楼2013-07-08 16:44
    回复


      3楼2013-08-04 18:37
      回复