Javascript google chrome extension obtenir le nom de domaine

J'ai essayé d'obtenir le nom de domaine à l'aide d'une alert(document.domain); Mais je n'obtiens pas le bon domaine lorsque je le teste dans un site,

Je reçois "hiecjmnbaldlmopbbkifcelmaaalcfib" cette sortie étrange.

Je l'ai ajouté dans le manifeste aussi

  "content_scripts": [ { "js": ["inject.js"] } ], 

Alerte (document.domain); Est la seule ligne de texte à l'intérieur de inject.js.

Et j'ai incorporé ce <script type="text/javascript" src="inject.js"> </script> dans le fichier html principal après popup.js

Des idées sur la raison pour laquelle je ne reçois pas l'URL du domaine correct?

Merci!

Si vous êtes en popup ou en arrière-plan ou une page d'options, il existe une approche indirecte pour obtenir le domaine de la page.

Vous pouvez vous référer au code suivant comme référence.

Manifestation

Manifest.json

Scripts de contenu enregistrés, arrière-plan et scripts contextuels avec fichier manifeste avec les autorisations pertinentes

 { "name": "Domain Name", "description": "http://stackoverflow.com/questions/14796722/javascript-google-chrome-extension-getting-domain-name", "version": "1", "manifest_version": 2, "content_scripts": [ { "matches": [ "<all_urls>" ], "js": [ "myscript.js" ] } ], "browser_action": { "default_popup": "popup.html" }, "background": { "scripts": [ "background.js" ] }, "permissions": [ "tabs", "<all_urls>" ] } 

Myscript.js

 console.log(document.domain);// Outputs present active URL of tab 

Popup.html

popup.js enregistré pour dépasser CSP.

 <html> <head> <script src="popup.js"></script> </head> <body></body> </html> 

Popup.js

Ajout d'un Event Listener pour le DOM Content Loaded , et a apporté l'URL active de l'onglet sur lequel l'utilisateur est activé.

 document.addEventListener("DOMContentLoaded", function () { console.log(document.domain);//It outputs id of extension to console chrome.tabs.query({ //This method output active URL "active": true, "currentWindow": true, "status": "complete", "windowType": "normal" }, function (tabs) { for (tab in tabs) { console.log(tabs[tab].url); } }); }); 

Background.js

 console.log(document.domain); //It outputs id of extension to console chrome.tabs.query({ //This method output active URL "active": true, "currentWindow": true, "status": "complete", "windowType": "normal" }, function (tabs) { for (tab in tabs) { console.log(tabs[tab].url); } }); 

Sortie

Tu trouveras

Fgbhocadghoeonlokakijhnlplgkolbg

Comme sortie pour console.log (document.domain); Dans toutes les pages d'extensions et

et

http://somedomain.com/

Pour la sortie tabs.query() .

Toutefois, la sortie du script de contenu est toujours

http://somedomain.com/

Les références

  • Tabs API
  • Scripts de contenu