每次onChange on select都会在用户脚本上触发?

时间:2017-09-05 02:26:51

标签: javascript userscripts tampermonkey

所以我有一个用户脚本解析页面并创建一个选择框并用选项填充它。

现在,只要用户在选择框中更改选定的索引,我就想调用脚本。不幸的是,看起来用户脚本只运行一次,并且无法读取选择的未来更改。

我试过了:

1)

$('#selectBox').on('change', function() 
{...}

(只运行一次?)

2)通过带有<script>标签的insertBefore注入函数“function_to_call”并将我的选择行格式化为:

<select onChange="function_to_call.call(this,event)">...</select>

并且它不起作用,说function_to_call未定义

3)这个函数:https://gist.github.com/nylen/6234717再次注入我自己的函数,但是参数传递的所有内容都是未定义的。

用户脚本是否可以连续监听事件,还是仅仅是一次性执行?

1 个答案:

答案 0 :(得分:1)

$('#selectBox').on('change', function() 
{...})

,这只运行一次的原因是因为附加到dom元素的事件监听器一旦编辑就会消失(通过insertBefore,更改innerHTML等)

所以使用

$(document).on('change','#selectBox',function() 
{...})

这将有效