0

我为最新的 Chrome 浏览器编写了一个用户脚本。加载后脚本似乎无法获取页面的更改内容(例如,在页面加载后,我单击了¿sth?并弹出了一个嵌入式窗口)。

即使我使用window.setTimeout()了,我仍然无法通过定时器回调获取更新的内容document.getElementById()。我检查了页面,发现弹出元素存在于 DOM 中。

这是用户脚本的限制吗?或者可以使用其他一些方法来获取用户脚本中的更新?

更新: 我按照建议尝试DOMSubtreemodified了活动。但行为仍然很奇怪。

我只在 my.safaribooksonline.com 的用户脚本中添加了一行 JavaScript,

document.addEventListener("DOMSubtreeModified", function () {
    alert(eval('typeof OpenSignInPopup')); });

但是警报框显示“未定义”作为OpenSignInPopup. 但是我可以同时在同一页面的脚本控制台中运行警报语句,并将结果显示为“函数”。

最初运行用户脚本时未加载此函数。那么如何在用户脚本中使用它呢?

4

1 回答 1

1

您需要提供详细信息,例如相关代码段和目标网页。

DOMSubtreeModified通常,您可以在 chrome中触发事件。这应该可以让您访问更改后的 DOM。

另外,您确定新内容不在 iframe 中吗?

更新新的 OP 信息:

但是警报框显示“未定义”作为 OpenSignInPopup 的评估结果。

In Chrome, Greasemonkey code cannot interact with the page's JS functions like that. You'll need to inject your code into the page. See this SO answer for more information.

于 2010-10-13T08:21:25.557 回答