在 Ajax 加载后重新初始化内容脚本
Reinitialising content script after Ajax load?
在我的内容脚本中,我正在遍历整个 DOM,例如对所有<img>
元素执行一些操作。
我在Background.js
中使用onUpdated
来检查何时打开选项卡,然后执行脚本。
chrome.tabs.onUpdated.addListener(function(tabId, info, tab) {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
if(info.status == "complete") {
chrome.tabs.sendMessage(tabs[0].id, function (response) {
// send data to content script etc.
});
}
});
}
这适用于未动态加载的内容 - 例如,在Facebook新闻提要上,它将对所有最初可见的图像执行我想要的操作 - 但是当我向下滚动时,会加载新的故事/照片等(使用AJAX? 不确定),当然这些<img>
元素不受我的内容脚本的影响。
如何重新加载(或调整会更好,因为我必须搜索整个 DOM 并且速度很慢)我的内容脚本,以便它适用于这个新调整的 DOM?我在这里找不到任何选项卡方法 - https://developer.chrome.com/extensions/tabs 提到这个问题。
试:
- 在
manifest
中添加all_frames : true
没有任何作用。 - 删除 info.status 条件也不执行任何操作。
您需要
监视页面以插入新图像,例如使用MutationObserver
或mutation-summary
库。 tabs
事件不会在此类页面更改时触发。
有关执行此操作的方法的讨论,请参阅此问题。
相关文章:
- 如何在加载完所有脚本后初始化angular
- 在 Ajax 加载后重新初始化内容脚本
- 为什么当我使用初始化触发器函数时,我总是找不到脚本函数:发送发票如果新
- jQuery准备在自定义行为脚本初始化之前启动
- 如何在脚本标记的功能中初始化会话
- 如何从javaScript文件中删除脚本初始化
- 将插件初始化和函数分组到单个脚本中
- 如何初始化脚本
- 用于脚本加载的预初始化jQuery代码不起作用
- 将API选项添加到初始化脚本
- JavaScript:在外部脚本中初始化谷歌地图
- JavaScript SDK Facebook:初始化脚本的问题
- 为什么 AngularJS 不使用内联<脚本>初始化
- FXML,脚本标记和初始化方法
- 使.close选择填充来初始化脚本
- Jquery选择框脚本没有自动初始化
- 在PHP脚本中为联系人表单初始化javascript
- 在jQueryMobile页面上初始化JS脚本
- 谷歌地图API地图-在身体而不是头部初始化脚本,地图不出现
- 在Firefox中加载初始化脚本的能力