假设您希望Greasemonkey脚本与Safari和Chrome兼容。
而在Firefox中,Greasemonkey脚本仅在DOM准备就绪时运行。 Chrome,Safari和Opera似乎在DOM准备好之前运行Greasemonkey脚本。
所以我要找的是一个解决方案,它只会在页面上运行一个侦听器,等待DOM加载/就绪事件,并在接收到该事件时,然后运行其余的脚本。如果他们使用的浏览器是Chrome,Safari或Opera。如果他们使用的是Firefox,只需立即运行脚本,而不必担心事件监听器。
如何编码?
@NV
感谢NV,您知道该脚本是否也与Google Chrome兼容?
代码
(function(){
// Code here run after 'load' event in all browsers.
})();
还可以在Google Chrome上运行DOM吗?
答案 0 :(得分:1)
首先,看看Nice alert UserJS。它适用于Greasemonkey,Opera和Safari Greasekit。
如果你想在页面加载后运行一些代码,根本不需要事件监听器。
... safari + opera,似乎在dom准备好之前运行gm脚本。
没有。实际上,它更复杂。 Opera有greasemokey compatible mode。所有名为yada-yada .user .js的脚本都以兼容模式运行,并在 DOM准备就绪后运行。
注意:将代码包装到匿名函数中以防止变量泄漏到全局窗口对象中(这在Opera中发生)。
(function(){
// Some code
})();
在这种情况下,Safari Greasekit的工作方式与Firefox Greasemonkey类似。
答案 1 :(得分:0)
我把缩小的jQuery复制粘贴到我的用户脚本中,然后做了经典的
$(document).ready(function() {
// Put all your jQuery goodness in here.
});
在给你jQuery方面有额外的好处,所有这些都包含在另一个问题中提到的函数中:
(function(){
// Some code.
})();
您可以使用Greasemonkey的东西通过顶部的URL导入jQuery,但这是特定的Greasemonkey,如果您这样做,Chrome / Opera等将不兼容。
答案 2 :(得分:-1)
我想你可能会看看像JQuery这样的JavaScript库如何解决这个问题。实际使用它可能太重了,但他们肯定已经解决了这个问题。