如何通过GreaseMonkey用户脚本在网页上触发jQuery定义的事件?

时间:2019-04-05 23:37:10

标签: javascript jquery greasemonkey

我正在尝试使用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)
  })

如何通过用户脚本使网页定义的触发器起作用?

1 个答案:

答案 0 :(得分:0)

也许这对您有用。

npm@6.9.1