Google chrome 如何获取页面中更改的内容?

Google chrome 如何获取页面中更改的内容?,google-chrome,greasemonkey,mutation-events,Google Chrome,Greasemonkey,Mutation Events,我为最新的Chrome浏览器编写了一个用户脚本。加载后,脚本似乎无法获取页面的更改内容(例如,加载页面后,我单击了?sth?,并弹出了一个嵌入式窗口) 即使我使用了window.setTimeout(),我仍然无法通过document.getElementById()获取计时器回调中的更新内容。我检查了页面,发现popup元素存在于DOM中 这是用户脚本的限制吗?或者可以使用其他一些方法在用户脚本中获取更新 更新: 我尝试了建议的domsubtreemedited事件。但这种行为仍然很奇怪 我只

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

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

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

更新: 我尝试了建议的
domsubtreemedited
事件。但这种行为仍然很奇怪

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

document.addEventListener("DOMSubtreeModified", function () {
    alert(eval('typeof OpenSignInPopup')); });
但是警报框显示“未定义”作为
OpenSignInPopup
的评估结果。但我可以在同一页面的脚本控制台中同时运行alert语句,并将结果显示为“函数”


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

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

通常,您可以在chrome中触发
DOMSubtreeModified
事件。这将使您能够访问更改的DOM

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

更新新OP信息: 但警报框显示“未定义”作为OpenSignInPopup的评估结果


在Chrome中,Greasemonkey代码不能像那样与页面的JS函数交互。您需要将代码注入页面。有关更多信息,请参阅。

Chrome GM脚本无法访问页面的Javascript。我已经更新了下面的答案。谢谢,这个链接解决了我的问题,比如将代码注入页面内容。