每次在用户脚本上触发 select 上的 onChange 时,如何调用函数?

How can I call a function everytime onChange on select is triggered on a userscript?

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

现在我想在用户更改 select 框上的 selected 索引时调用脚本。不幸的是,用户脚本似乎只有 运行 一次,并且无法读取 select.

上的未来更改

我试过:

1)

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

(只有运行一次?)

2) 通过带有 <script> 标记的 insertBefore 注入函数 "function_to_call" 并将我的 select 行格式化为:

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

又不行,说function_to_call未定义

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

用户脚本是否有可能连续监听事件,或者它真的只是一次性执行?

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

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

所以使用

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

这会起作用