gpt4 book ai didi

facebook - 使用异常内容加载时未执行 Greasemonkey 脚本

转载 作者:行者123 更新时间:2023-12-04 06:52:49 31 4
gpt4 key购买 nike

我正在尝试为 Facebook 编写一个 Greasemonkey 脚本,并且在他们所做的时髦页面/内容加载时遇到了一些问题(我不太明白这一点 - 很多链接实际上只是在更改 GET,但我认为他们做某种服务器重定向以使 URL 在浏览器中看起来也一样?)。本质上,唯一需要的测试是放置 GM_log()在脚本中独立。如果您在 Facebook 周围单击,即使使用 facebook.com/* 作为模式,它通常也不会执行。有什么我可以做的,或者是在 Greasemonkey 中修复了“页面加载”的想法,而 FB 正在通过使用单个 URL “欺骗”它不运行?

如果我尝试像这样进行一些基本的内容操作:

    GM.log("starting");
var GM_FB=new Object;
GM_FB.birthdays = document.evaluate("//div[@class='UIUpcoming_Item']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (i = GM_FB.birthdays.snapshotLength - 1; i >= 0; i--) {
if (GM_FB.birthdayRegex.test(GM_FB.birthdays.snapshotItem(i).innerHTML)) {
GM_FB.birthdays.snapshotItem(i).setAttribute('style','font-weight: bold; background: #fffe88');
}
}

结果是有时只有手动页面刷新才能使其工作。拉起 Firebug 控制台并强制代码运行工作正常。请注意,这不是由于 DOM 某些部分的延迟加载:我稍后添加了一些代码来等待相关元素,而且至关重要的是,对于某些转换,消息永远不会被记录。例如,当我从消息切换到新闻提要并返回时。

最佳答案

他们不是使用 ajax 加载 div 中的内容 ?您可以使用 Firebug 找到正在更新的元素例如。

当您单击某些内容并且 URL 发生更改时,但带有 #在 URL 上,然后是一些文本,这意味着文本不是路径,它是一个参数,浏览器不会改变你所在的页面,所以由于 GreaseMonkey 在页面加载时注入(inject)脚本,它不会再次注入(inject),因为页面没有重新加载。
如您的示例中的 URL facebook.com/#!/sk=messages没有离开 facebook.com/它不会触发 window.load事件。
因此,您需要找到正在更改的元素并向该元素添加事件监听器,您可以使用我之前提到的 Firebug。

在找出获取内容的元素后,您必须向该元素而不是页面添加事件监听器(GreaseMonkey 仅在窗口加载事件上添加)。

因此,在您的 GM 脚本中,您将拥有(“空气代码”)

document.getElement('dynamic_div').addEvent('load', /*your script*/);

关于facebook - 使用异常内容加载时未执行 Greasemonkey 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2872589/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com