3 回答
TA贡献2051条经验 获得超10个赞
GreaseMonkey 和类似替代方案的默认行为是在加载 DOM(文档对象模型)之后运行用户脚本,即在解析 HTML 但包含的资源完成加载之前。
有些脚本需要在 DOM 加载之前做一些事情。为了实现这一点,他们使用元块条目。这使您有机会在加载时拦截站点正在执行的任何操作。但是,使用此条目,您的脚本在开始运行时对文档一无所知。(请注意 GM 4.0 中的有限支持)@run-atdocument-start
如果您在网站加载之前不需要做任何事情,请使用元条目@run-at document-end或完全忽略此条目。
更准确的方法是实现一个事件监听器。现代浏览器支持该DOMContentLoaded事件,在某些 JS 框架中以前称为“domready”事件。
document.addEventListener('DOMContentLoaded', evt =>
{
// Do DOM-based stuff here...
document.addEventListener('keydown', evt =>
{
document.getElementById('form1:commandLink1211').click();
});
});
使用 JQuery 速记$(evt => {/* DOM ready stuff */} );也可以。
TA贡献1850条经验 获得超11个赞
Javascript 运行时元素尚未加载,因此未找到具有给定 id 的元素。尝试在您的代码周围包装一个函数:
function loaded(){
document.addEventListener('keydown', function(e) {
// pressed alt+g
if (e.keyCode == 71 && !e.shiftKey && !e.ctrlKey && e.altKey && !e.metaKey)
{
console.log ("key pressed");
document.getElementById('form1:commandLink1211').click();
}
}, false);
}
并确保你有
onload="loaded()"
在body标签中。
TA贡献1820条经验 获得超9个赞
而document.getElementById('form1:commandLink1211').click();
不是你可以做submitForm('form1',1,{source:'form1:commandLink1211'});
。它应该做同样的事情,对吧?
添加回答
举报