gpt4 book ai didi

ajax - Chrome 扩展在 ajax 更改上运行内容脚本

转载 作者:行者123 更新时间:2023-12-04 23:27:05 24 4
gpt4 key购买 nike

我有一个 chrome 扩展程序,它在网站上进行了一些更改(编辑评论)。

在网站上最近的更改(网站不是我的)之后 - 使用 ajax 加载评论 block (在它是整个页面重新加载的简单发布请求之前)。

现在,如果我第一次加载页面 - 内容脚本可以工作,但是当我转到下一页时,比如第 2 页 - 使用 ajax 添加评论并且不再运行扩展脚本。所以评论不会改变我想要的方式。

有没有什么简单的方法来监听页面更改 DOM 并再次应用扩展脚本?

在 list 文件中我有:

{
"name": "Name",
"version": "1.0",
"description": "Description",
"icons": {"16":"16.png",
"48":"48.png",
"32":"32.png",
"128":"128.png"},
"browser_action": {
"default_title": "Default title",
"default_icon": "48.png",
"popup": "popup.html"
},
"permissions": [
"tabs",
"http://www.site.com/*",
"notifications",
"unlimitedStorage"
],

"options_page": "options.html",
"background_page": "background.html",

"content_scripts": [
{
"matches": ["http://www.site.com/*","https://www.site.com/*"],
"js": ["jquery-1.7.1.min.js","content.js"],
"run_at": "document_end"
}]
}

最佳答案

您可以在名为 DOMSubtreeModified 的事件上添加一个监听器。 .给它绑定(bind)一个函数,只要有变化就会调用它。

在 jQuery 中:

$('#ContentContainer').bind('DOMSubtreeModified',modifyComments);

更新:

如果事件多次触发,请在第一次删除事件绑定(bind),并在一定超时后,您可以调用 modifyComments 并重新绑定(bind)事件。
function DOMModificationHandler(){
$(this).unbind('DOMSubtreeModified.event1');
setTimeout(function(){
modifyComments();
$('#ContentContainer').bind('DOMSubtreeModified.event1',DOMModificationHandler);
},1000);
}

//after document-load
$('#ContentContainer').bind('DOMSubtreeModified.event1',DOMModificationHandler);

关于ajax - Chrome 扩展在 ajax 更改上运行内容脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11084819/

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