Chrome插件开发:无法触发<select>元素onchange事件的解决方案求助
如何触发Chrome插件中网页select元素的onchange内置函数?
我最近在开发一款Chrome插件,用来操控目标网页的内容、扩展它的功能。不过遇到了个棘手的问题——目标页里有个带onchange事件的<select>元素,我没法触发它绑定的onchangeOfPicklist()函数,折腾了好几种方法都没用,想求助下大家!
目标网页的<select>元素代码如下:
<select id="thePage:form:pBlock:address:addressTypeSelectionDropdown" name="thePage:form:pBlock:address:addressTypeSelectionDropdown" size="1" onchange="onchangeOfPicklist();"> <option value="User Entry">User Entry</option> <option value="CustomerID">CustomerID</option> <option value="Closest to Customer">Closest to Customer</option> <option value="Location">Location</option> <option value="Customer's Address" selected="selected">Customer's Address</option> </select>
我需要在特定条件下切换这个元素的选项,但试了好几种方法都没法触发它绑定的onchangeOfPicklist()函数,具体尝试过这些操作:
- 直接触发change事件:
let customerAddress = labelAddress.parent().next().first().find("select"); customerAddress.children('[value="Closest to Customer"]').trigger("change");
- 设置selected属性后触发change:
customerAddress.children('[value="Closest to Customer"]').attr("selected", "selected"); customerAddress.children('[value="Closest to Customer"]').change();
- 使用prop设置选中状态并触发change:
customerAddress .find('option:Closest to Customer') .prop('selected',true) .trigger('change');
- 模拟按键事件:
let e = jQuery.Event("keydown"); e.which = 13; // enter键 customerAddress.focus(); customerAddress.trigger(e);
更奇怪的是,我给这个元素添加事件监听器后,也没捕获到触发的事件。因为我只能修改插件代码,没法改动网页的源码和脚本,想问问有没有办法触发这个<select>元素的内置onchange函数?
内容的提问来源于stack exchange,提问作者zlobul
相关产品推荐
相关产品推荐

