Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript popup.js何时启动?_Javascript_Google Chrome Extension - Fatal编程技术网

Javascript popup.js何时启动?

Javascript popup.js何时启动?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,manifest.json { "manifest_version": 2, "name": "YouTellMe", "description":"FIND AND COMPARE OVER 10.000.000 PRODUCTS AND GET THE BEST PRICES FROM ALL MAJOR INDIAN WEBSHOPS. GET DISCOUNTS TO HAVE THE CHEAPEST PRICE!", "version":"0.0", "browser_actio

manifest.json

{
"manifest_version": 2,

"name": "YouTellMe",
"description":"FIND AND COMPARE OVER 10.000.000 PRODUCTS AND GET THE BEST PRICES FROM ALL MAJOR INDIAN WEBSHOPS. GET DISCOUNTS TO HAVE THE CHEAPEST PRICE!",
"version":"0.0",

"browser_action":
{
    "default_icon":"logoytm.png",
    "default_popup": "offers.html",
    "badge" : "YTM"
},

"background" : 
{
    "scripts" : ["find_offers.js"],
    "persistent" : false
},

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",

"permissions":
[
    "tabs",
    "activeTab",
    "webNavigation",
    "notifications",
    "https://ajax.googleapis.com/",
    "http://localhost/*",
]}
find_offers.js

if(!window.jQuery)
{
log(“导入jquery…”)
script=document.createElement('script');
script.source=http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js';
document.getElementsByTagName(“头”)[0].appendChild(脚本)
}
chrome.tabs.onUpdated.addListener(tab_激活);
chrome.webNavigation.onCompleted.addListener(加载iframe);
var tablink;
功能选项卡_已激活()
{
chrome.tabs.query({'active':true,'windowId':chrome.windows.WINDOW\u ID\u CURRENT},
功能(选项卡)
{
tablink=选项卡[0]。url;
});
}
函数加载\u iframe()
{
控制台日志(“加载iframe”);
ytm_产品_url=”http://localhost/bookmarklet/product/";
console.log(“当前URL”+tablink);
如果(tablink!=未定义)
{
var uri=ytm_产品_url+“?零售商_url=“+tablink;
}
其他的
{
var uri=ytm_product_url+“?零售商_url=“+document.location.href;
}
chrome.extension.sendMessage({url:uri});

}
假设弹出窗口在关闭时侦听消息是错误的

事实上,当弹出窗口关闭时,包含
load\u offers.js
的HTML文档将被完全卸载,并且每次都会重新加载

因此,向弹出窗口发送消息通常不是一个好主意,除非弹出窗口先发出请求

你需要修改你的逻辑;只能在弹出窗口打开时从其内部查询信息,或者存储信息以便弹出窗口打开时可以请求信息。后者可能很困难,因为您将您的背景声明为
persistent:false
chrome.storage
是一个选项)


从您当前的逻辑来看,当弹出窗口打开时,当前页面似乎不太可能更改;因此,在打开弹出窗口时,您只需查询当前选项卡的相关信息,而不需要当前形式的背景脚本。

谢谢您的回复。是的,你在写,我在阅读问题标题后意识到了这一点。所以现在我想在后台js中从服务器中提取数据,并通知用户数据已经准备好,点击数据图标,因为弹出窗口无法实际打开。做吧!如果用户有感兴趣的信息,请拉取数据-使用
browserAction.setBadgeText
或更改图标以指示您有信息要显示,并将该信息存储在
chrome.storage
中。在弹出窗口中,打开时从
chrome.storage
中提取数据。感谢您的想法(chrome.storage)