javascript - 模拟人类点击并在下拉菜单中选择

标签 javascript jquery google-chrome-extension

我试图通过带有 javascript 的 chrome 扩展从国家/地区下拉菜单中选择一个选项。当我通过国家/地区下拉菜单正常选择一个选项时,状态下拉菜单中的值会根据我的选择而变化。

我试过用很多不同的方法选择一个选项,这里是其中的大部分:

$('#order_billing_country').val('CANADA').trigger("change")
$('#order_billing_country').val('CANADA').trigger('select')
$('#order_billing_country').val('CANADA').trigger('onselect')
Those past 3 but triggering select, onselect, and change
$('select').find('option[value=CANADA]').attr('selected','selected').end().trigger('onselect');

没有任何效果...他们更改了国家/地区下拉列表中的值,但它不会触发状态下拉列表中的更改。有没有办法通过 javascript 像人类一样选择一个选项?...

最佳答案

要小心,因为扩展程序有自己的 DOM,要访问页面 DOM,我建议您使用内容脚本和 Vanilla (纯)javascript 来选择并“手动”点击。

window.addEventListener("load", function load(event) {
    var optionToClick = document.querySelector('#order_billing_country').children[2]; //choose any of the children
    optionToClick.selected = true;
    simulateClick(optionToClick); // manual click simulation 
});

function simulateClick(item) {
  item.dispatchEvent(new PointerEvent('pointerdown', {bubbles: true}));
  item.dispatchEvent(new MouseEvent('mousedown', {bubbles: true}));
  item.dispatchEvent(new PointerEvent('pointerup', {bubbles: true}));
  item.dispatchEvent(new MouseEvent('mouseup', {bubbles: true}));
  item.dispatchEvent(new MouseEvent('mouseout', {bubbles: true}));
  item.dispatchEvent(new MouseEvent('click', {bubbles: true}));
  item.dispatchEvent(new Event('change', {bubbles: true}));

  return true;
}

希望对你有帮助

关于javascript - 模拟人类点击并在下拉菜单中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49886729/

相关文章:

javascript - 将我的搜索过滤器链接到列表项 : knockout js

javascript - Angular 4 http响应混合在一起

javascript - 解析作业未按计划时间间隔运行

javascript - 我是否正确捕获此 JSON 值?

google-chrome - chrome tabId 跨窗口唯一吗

javascript - 如何将不和谐登录添加到 Chrome 扩展程序

javascript - 将大型 JSON/JS 对象从内容脚本压缩到 background.js - chrome 扩展

javascript - 嵌套对象引用有简写吗?

javascript - JQuery 将 json 解释为脚本?

javascript - 无法使用 jquery 定位所需数据