我无法在页面上运行脚本。
这是我的background.js的样子:
chrome.tabs.query({
url: 'https://www.tradingview.com/*'
}, function(tabs) {
if (tabs.length == 1) {
var tabURL = tabs[0].url;
alert(tabURL);
alert(tabs[0].id);
chrome.tabs.executeScript(tabs[0].id, {file: "getTradingData.js"}, function(){
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
} else {
alert("Please have one and only one tradingview chart page opened.");
}
});
chrome.tabs.executeScript(tabs[0].id, {file: "getTradingData.js"}
应该执行脚本getTradingData.js,但我认为不是。我在脚本中有一个未运行的警报,但在刷新页面时会以内容脚本的形式运行。
以下是ny getTradingData.js的样子: alert(“getTradingData.js正在运行”);
var myPort = chrome.extension.connect();
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
alert("got message");
if (request.subject == "getPrice")
sendResponse({
msg: price
});
});
最后这是我的manifest.json:
{
"manifest_version": 2,
"name": "Automated TradingView Strategy",
"description": "This extension shows a Google Image search result for the current page",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"background": {
"scripts": ["jquery-2.2.3.min.js", "background.js"]
},
"content_scripts": [
{
"matches": ["https://www.tradingview.com/chart/*", "http://www.tradingview.com/*"],
"js": ["jquery-2.2.3.min.js", "getTradingData.js"]
}
],
"permissions": [
"activeTab",
"tabs",
"https://ajax.googleapis.com/"
]
}
我需要能够在“tradingview.com/chart/*”和扩展名background.js之间发送数据。但是,当我刷新扩展名时,脚本没有加载,因此无法接收或发送消息。
让我知道我做错了什么。
答案 0 :(得分:2)
要使用getTradingData.js
运行executeScript
,您必须在permissions
中添加网站地址。
"permissions": ["*://*.tradingview.com/*", "tabs"]
从background
发送{greeting: "hello"}
,但您不接受getTradingData.js
中的这些数据。因此,你没有得到回应。
console.log(response.farewell);
您不发送response.farewell
。它们不会显示。
if (request.subject == "getPrice") {
sendResponse({msg: price});
}
相同。您只会收到提醒。