我正在尝试使用GreaseMonkey脚本自动执行某人的网页上的选择。选择定义如下:
<select class="some-select">
<option value="one">One</option>
<option value="two">Two</option>
</select>
它在网页上定义了一个jQuery触发器:
$(".some-select").on("change", doSomeStaff);
我这样写了一个GreaseMonkey脚本:
// ==UserScript==
// @match https://site/page/*
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
// @grant none
// ==/UserScript==
function run() {
$('.some-select option').removeAttr('selected').filter('[value=one]').prop('selected', true)
$('.some-select').val('one').trigger('change')
}
$(document).ready(function() {
run()
})
当我加载页面时,选择了该选项,但未触发doSomeStaff
。
当我在用户脚本中安装新触发器时,它将起作用。 $('.some-select').on('change', function(){alert('user trigger')}).trigger('change')
将显示该消息。但是不会运行在网页上定义的触发器。
此代码具有相同的问题:
var event = new Event('change')
$('.some-select').each(function(){
this.dispatchEvent(event)
})
如何通过用户脚本使网页定义的触发器起作用?
答案 0 :(得分:0)
也许这对您有用。
npm@6.9.1