Javascript 每当选项卡URL更改时,在$(document).ready(function(){})之后写入内容脚本的代码不会';不要注射。我怎样才能解决这个问题?
我为一个网站创建了一个chrome扩展,该网站使用ajax调用进行网页导航,因此每次都必须重新加载页面,才能注入脚本。为了避免这种情况,我使用了如下方法:Javascript 每当选项卡URL更改时,在$(document).ready(function(){})之后写入内容脚本的代码不会';不要注射。我怎样才能解决这个问题?,javascript,jquery,html,ajax,google-chrome-extension,Javascript,Jquery,Html,Ajax,Google Chrome Extension,我为一个网站创建了一个chrome扩展,该网站使用ajax调用进行网页导航,因此每次都必须重新加载页面,才能注入脚本。为了避免这种情况,我使用了如下方法: chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab) { if(changeInfo.url){ console.log("tab url changed"); chrome.tabs.executeScript(null, {file: "
chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab) {
if(changeInfo.url){
console.log("tab url changed");
chrome.tabs.executeScript(null, {file: "js/jquery-3.2.1.min.js"});
chrome.tabs.executeScript(null, {file: "payload.js"});
}
});
因此,每当我在网站页面之间导航时,“tab url changed”就会在控制台中打印出来
console.log("ready");
$(document).ready(function() {
var button = document.getElementsByClassName("recommend u-flexColumn u-marginBottom10 u-width60")[0];
if (button) {
console.log("element is ready");
}
});
因此,每当我点击网站内的链接时,“就绪”总是被打印出来。但是“element is ready”并不总是打印出来,因为$(document).ready(function()只在页面重新加载时执行。如何让文档后的代码也准备好每次执行,而不必每次重新加载页面?我还在manifest.json中添加了“run_at”:“document_end”。您对的使用不正确
您应该将tabId
作为第一个参数传递:
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (changeInfo.url) {
console.log("tab url changed");
chrome.tabs.executeScript(tabId, {file: "js/jquery-3.2.1.min.js"});
chrome.tabs.executeScript(tabId, {file: "payload.js"});
}
});
谢谢,但这并没有解决问题。根本不要使用
ready
。文档准备就绪后,您的代码已经运行。