5

假设您希望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 上运行吗?

4

3 回答 3

1

首先,看一下Nice alert UserJS。它适用于 Greasemonkey、Opera 和 Safari Greasekit。

如果您想在页面加载后运行一些代码,则根本不需要事件侦听器。

... safari + 歌剧,似乎在 dom 准备好之前运行 gm 脚本。

不,实际上,它更复杂。Opera 有greasemokey 兼容模式。所有名为 yada-yada .user .js 的脚本都以兼容模式运行,并DOM 准备好后运行。

注意:将您的代码包装到匿名函数中以防止变量泄漏到全局窗口对象中(这发生在 Opera 中)。

(function(){

  // Some code

})();

在这种情况下,Safari Greasekit 的工作方式与 Firefox Greasemonkey 类似。

于 2009-10-15T10:19:12.593 回答
0

我把缩小的 jQuery 复制粘贴到我的用户脚本中,然后做了经典的

  $(document).ready(function() {
      // Put all your jQuery goodness in here.
  });

其中有一个额外的好处是给你 jQuery,所有这些都包含在另一个问题中提到的函数中:

(function(){

  // Some code.

})();

您可以使用 Greasemonkey 的东西通过顶部的 URL 导入 jQuery,但这是 Greasemonkey 特定的,如果您这样做,Chrome/Opera 等将不兼容。

于 2010-01-05T18:19:34.060 回答
-1

我想你可能会看看像 JQuery 这样的 JavaScript 库是如何实现这一点的。实际使用它可能太重了,但他们肯定已经解决了这个问题。

于 2009-10-14T21:36:00.847 回答