0

我使用 Greasemonkey 在“google.com/*”上运行了一个小脚本,
基本上我的脚本向 google 菜单添加了一些菜单项(您可以在其中找到图像、视频、地图、新闻、购物等);

这个菜单在 qbar div 里面,所以它看起来像:

<div id="gbar"> ...menu code ... </div>

如果您访问 google 网页 (www.google.com),我的脚本中的下一行可以正常工作:

var gbar = var gbar = document.getElementById("gbar");
if (qbar != null) alert("qbar exist!");
else alert("qbar is null");

此代码提醒 qbar 存在,这很好。

现在,如果我在 google 中查找任何单词,例如搜索“madman”,您将进入此页面:

http://www.google.com/#sclient=psy&hl=en&q=madman&aq=f&aqi=g5&aql=&oq=&pbx=1&fp=fd0f73886609171d

现在脚本仍在运行,只是现在它警告“gbar 为空”

我认为原因是脚本在页面上创建 gbar 元素之前运行。这很奇怪,因为我确信油脂猴子脚本仅在所有内容加载完成后才会运行。

4

1 回答 1

4

您可以设置一个DOM 突变事件。基本上,以下是步骤:

  • 如果找到,请进行初始搜索document.getElementById('gbar')并处理它。

  • 在文档上设置一个DOMNodeInserted事件处理程序。

    • 如果插入的元素有,id="gbar"那么你就知道 gbar 被插入了。
    • 如果没有,则在插入的元素中搜索具有的元素,id="gbar"如果找到则处理它。

您可以看到一个工作示例代码。gbar当将 a添加到文档时,它会添加 5 个感叹号。

于 2011-01-16T12:35:36.133 回答