manifest.jsonQuand popup.js est-il lancé?
{
"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)
{
\t console.log("importing jquery...")
\t script = document.createElement('script');
\t script.source = 'http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js';
\t document.getElementsByTagName("head")[0].appendChild(script)
}
chrome.tabs.onUpdated.addListener(tab_activated);
chrome.webNavigation.onCompleted.addListener(load_iframe);
var tablink;
function tab_activated()
{
\t chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT},
function(tabs)
{
\t \t \t tablink = tabs[0].url;
});
}
function load_iframe()
{
\t console.log("in load iframe");
\t ytm_product_url = "http://localhost/bookmarklet/product/";
console.log("current URL " + tablink);
if(tablink != undefined)
{
\t var uri = ytm_product_url+"?retailer_url="+tablink;
}
else
\t {
\t var uri = ytm_product_url+"?retailer_url="+document.location.href;
\t }
chrome.extension.sendMessage({url:uri});
}
offers.html
<html>
<head>
<title></title>
</head>
<link rel="stylesheet" type="text/x-scss" href="bookmark_offers.css" />
<script src='jquery.min.js'></script>
<script src='load_offers.js'> </script>
<body>
<div id="YTM_offers"> </div>
</body>
</html>
load_offers.js
chrome.runtime.onMessage.addListener
(
\t function (request)
{
\t \t alert("message received");
$.ajax
(
{
url : request.url,
}
)
.done
(
function(data)
{
\t notifyUser();
console.log($("#YTM_offers")[0]);
// document.getElementById('YTM_offers').innerHTML += data;
$("#YTM_offers").html(data);
console.log($("#YTM_offers"));
}
)
}
)
function notifyUser()
{
\t console.log("notification...")
\t if (! Notification)
\t {
\t \t alert('Notifications are supported in modern versions of Chrome, Firefox, Opera and Firefox.');
\t return;
\t }
\t
\t if(Notification.permission !== "granted")
\t \t Notification.requestPermission();
\t
\t var notification = new Notification("YouTellMe",
\t \t \t { icon : 'logoytm.png',
\t \t \t \t body : "We've got more offers for you." +
\t \t \t \t \t \t "\nClick on extension Icon for more details."
\t \t \t });
}
maintenant l'énoncé du problème. J'envoie l'URL de la page en cours de find_offers.js
à load_offers.js
puis load_offers.js
tire les offres connexes du serveur, qui est peuplé dans div appelé YTM_offers
. J'écoute le message (url) de find_offers.js mais ici envoyer une partie fonctionne parfaitement, mais la réception de la partie ne fonctionne pas jusqu'à ce que j'inspecte popup.html et recharger la page actuelle.
Qu'est-ce que je fais mal? Aide appréciée.Merci
Merci pour la réponse. oui vous écrivez, je me rends compte qu'après avoir lu l'en-tête de la question. alors maintenant je veux tirer des données du serveur en arrière-plan js, et informer l'utilisateur que les données sont prêtes, cliquez sur l'icône pour les données, comme popup ne peut pas être ouvert de façon pragmatique. –
Donc. Fais le! Tirez les données, s'il y a des informations intéressantes pour l'utilisateur - utilisez 'browserAction.setBadgeText' ou changez l'icône pour indiquer que vous avez des informations à afficher, et stockez ces informations dans' chrome.storage'. Dans la popup, tirez les données de 'chrome.storage' quand il s'ouvre. – Xan
Merci pour l'idée (chrome.storage) –