Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改事件未从页面触发_Javascript_Google Chrome Extension - Fatal编程技术网

Javascript 更改事件未从页面触发

Javascript 更改事件未从页面触发,javascript,google-chrome-extension,Javascript,Google Chrome Extension,最初我发布了这个问题。但后来我通过反复试验得到了答案。现在我想知道为什么我的答案会有效 在下面的示例中,当我运行$(“#debitCard”).change()时从扩展它不工作,但当我从Chrome控制台运行它的工作 为什么此行为与从控制台运行时不同?我甚至在setTimeout 我甚至在HTML中创建了一个按钮,单击它将调用此函数,但即使这样也不起作用。但是,每次从控制台调用都有效 回答 我替换了这个$(“#debitCard”).change()到此: var element = docum

最初我发布了这个问题。但后来我通过反复试验得到了答案。现在我想知道为什么我的答案会有效

在下面的示例中,当我运行
$(“#debitCard”).change()时从扩展它不工作,但当我从Chrome控制台运行它的工作

为什么此行为与从控制台运行时不同?我甚至在
setTimeout

我甚至在HTML中创建了一个按钮,单击它将调用此函数,但即使这样也不起作用。但是,每次从控制台调用都有效

回答

我替换了这个
$(“#debitCard”).change()到此:

var element = document.getElementById('debitCard');
var event = new Event('change');
element.dispatchEvent(event);
我想知道Javascript/JQuery出现这种怪癖的原因


扩展中的jQuery与内容页中的jQuery或库在不同的范围内运行

如果内容页中的功能使用使用jQuery或类似的事件处理程序,则无法从扩展范围中的jQuery调用这些处理程序,因为无法引用它们

但是,无论是以本机方式还是通过内容脚本中的jquery触发该事件,都会起作用并触发页面的处理程序

编辑:

自从这篇文章以来,这个问题一直萦绕在我的脑海中,今天我发现了一个例子,说明了我的原始观点——不能(总是)使用jQuery启动事件处理程序:

目标:

<a id="vcemail-link"  href="#" onclick="signOut();">Sign out...</a>
这可能会让@user5858满意,也可能不会让您满意,但它很重要,值得记住,我想它也会应用于inline onchange()


扩展中的jQuery与内容页中的jQuery或库在不同的范围内运行

如果内容页中的功能使用使用jQuery或类似的事件处理程序,则无法从扩展范围中的jQuery调用这些处理程序,因为无法引用它们

但是,无论是以本机方式还是通过内容脚本中的jquery触发该事件,都会起作用并触发页面的处理程序

编辑:

自从这篇文章以来,这个问题一直萦绕在我的脑海中,今天我发现了一个例子,说明了我的原始观点——不能(总是)使用jQuery启动事件处理程序:

目标:

<a id="vcemail-link"  href="#" onclick="signOut();">Sign out...</a>
这可能会让@user5858满意,也可能不会让您满意,但它很重要,值得记住,我想它也会应用于inline onchange()


刚刚添加了参考。我花了很多时间试图找到一个公共页面,我可以试试这个,我想我会证明我的答案。我没有,我反驳了(部分)。我正在修改我的答案,因为它有一些价值,但它不是你问题的答案。您不能直接调用事件处理程序(很明显,嗯?),因为您不能引用它们。但是,如果它们是事件驱动的,您可以通过本机或扩展范围中的jquery触发这些事件。我所做的是在页面中插入javascript简介,并设法以这种方式触发事件。只是添加了引用。我花了很多时间试图找到一个公共页面,我可以试试这个,我想我会证明我的答案。我没有,我反驳了(部分)。我正在修改我的答案,因为它有一些价值,但它不是你问题的答案。您不能直接调用事件处理程序(很明显,嗯?),因为您不能引用它们。但是,如果它们是事件驱动的,则可以通过本机或扩展范围中的jquery触发这些事件。我所做的是在页面中插入javascript简介,并设法以这种方式触发事件。请参阅