添加了Tampermonkey的onclick没有调用该函数?

Arc*_*val 5 javascript jquery onclick tampermonkey

如果我使用Tampermonkey以编程方式创建div:

HTML:

<div onclick="myfunc()"/>
Run Code Online (Sandbox Code Playgroud)

脚本:

function myfunc() { alert("clicked"); }
Run Code Online (Sandbox Code Playgroud)

然后点击div; myfunc在我的脚本中没有调用.

我怎样才能让它发挥作用?

(我使用TM/jQuery将div添加到页面中,我想附加一些功能.我假设我必须将HTML中的函数调用重定向到正确的位置.我也使用GM_函数,所以我不能只需直接插入代码.)

Bro*_*ams 8

问题是,由于您将属性设置为字符串,因此它正在评估目标页面范围中的字符串,该字符串没有myfunc函数. myfunc驻留在用户脚本范围内.

作为一般规则,你永远不onclick应该使用,但这对于用户脚本来说是三倍.

使元素易于选择,如:

<div id="gmMyDiv"></div>
Run Code Online (Sandbox Code Playgroud)


然后,既可以使用addEventListener()方法,如下所示:

function myfunc (zEvent) {
    alert ("clicked"); 
}

var myDiv   = document.querySelector ("#gmMyDiv");
if (myDiv) {
    myDiv.addEventListener ("click", myfunc , false);
}
Run Code Online (Sandbox Code Playgroud)


或者因为你使用jQuery:

function myfunc (zEvent) {
    alert ("clicked"); 
}

$("#gmMyDiv").click (myfunc);
Run Code Online (Sandbox Code Playgroud)