我正在Greasemonkey中构建一个脚本,在单击按钮时更改select标签。但是,当前选择已经有一个onChange
选项可以更改子类别。
有没有办法让脚本运行呢?
HTML代码:
<select id="incident.category" name="incident.category" style=";width:160px;width:180px" onchange="onChange('incident.category');"><option value="">-- None --</option><option value="request" selected="SELECTED">Request</option><option value="incident">Incident</option><option value="informational">Informational</option></select>
我的代码:
document.getElementById("incident.category").value = "informational";
document.getElementById("incident.category").focus();
window.setTimeout(function ()
{
document.getElementById("incident.subcategory").value = "informational-informational";
document.getElementById("incident.subcategory").focus();
}, 1000);
如果该类别未触发onChange
现在正在发生的事情,则不会出现子类别。
有什么想法吗?
答案 0 :(得分:1)
由于这是Greasemonkey和/或Tampermonkey,您可以使用unsafeWindow
。 EG:
document.getElementById("incident.category").value = "informational";
document.getElementById("incident.category").focus();
unsafeWindow.onChange('incident.category');
...
否则,首选方法是inject your script code。
答案 1 :(得分:1)
location hack是一种安全简便的方法来执行页面中定义的功能:
location.assign("javascript:window.onChange('incident.category');void(0)");
这很像在Greasemonkey脚本中运行bookmarklet,因此它非常适合需要仅引用页面中的一些内容的脚本。并且,由于javascript:
网址始终在内容范围内执行,因此此方法没有使用unsafeWindow
带来的任何安全问题。