Ich kann nicht herausfinden, wie man einige Daten von meinem Inhaltsskript zu popup.html
sendet. Es ist ein xpath
des angeklickten Elements. Ich bin sehr neu zu Chrome Extensions so vielleicht ist es offensichtlich.Wie erhält man eine Nachricht, die vom Inhaltsskript an popup.js/html gesendet wird?
Ich habe Artikel über die Weitergabe von Nachrichten gelesen, aber ich habe ein Chaos dort.
Ich fand heraus, wie man eine Nachricht von xpathget.js
sendet, aber ich weiß nicht, wie man es empfängt und es auf popup.html
zeigt, da es schließt, nachdem ich auf irgendein Element anklicke.
manifest.json
{
"manifest_version": 2,
"name": "Product",
"description": "This is a plugin collaborating with product.com",
"version": "1.0",
"browser_action": {
"default_icon": "spy-icon.png",
"default_popup": "popup.html",
"default_title": "Click here!"
},
"icons":{
"64":"spy-icon.png"
},
"background": {
"scripts": ["authentication.js"]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["xpathget.js"]
}
],
"permissions": [
"activeTab",
"https://ajax.googleapis.com/",
"cookies",
"<all_urls>"
],
"content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'"
}
popup.js
$(document).ready(function() {
$('body').height(280);
$('html').height(280);
MESSAGE_GET_HANDLER(){
ALTER_THE_HTML;
}
});
Ich nehme an, dass ich xpath
String popup.js
die dann ändert die popup.html
html und fertig zu schicken.
xpathget.js
document.onclick= function(event) {
if (event===undefined) event= window.event; // IE hack
var target= 'target' in event? event.target : event.srcElement; // another IE hack
var root= document.compatMode==='CSS1Compat'? document.documentElement : document.body;
var mxy= [event.clientX+root.scrollLeft, event.clientY+root.scrollTop];
var path= getPathTo(target);
var txy= getPageXY(target);
chrome.runtime.sendMessage({xpath: path}, function() {
alert('sent');
}); <== I HAVE TO SEND THIS PATH TO PLUGIN
}
function getPathTo(element) {
if (element.id!=='')
return 'id("'+element.id+'")';
if (element===document.body)
return element.tagName;
var ix= 0;
var siblings= element.parentNode.childNodes;
for (var i= 0; i<siblings.length; i++) {
var sibling= siblings[i];
if (sibling===element)
return getPathTo(element.parentNode)+'/'+element.tagName+'['+(ix+1)+']';
if (sibling.nodeType===1 && sibling.tagName===element.tagName)
ix++;
}
}
function getPageXY(element) {
var x= 0, y= 0;
while (element) {
x+= element.offsetLeft;
y+= element.offsetTop;
element= element.offsetParent;
}
return [x, y];
}
Können Sie besser erklären, was tatsächlich in Ihrer Erweiterung passiert? Klickt etwas auf der Seite, um das Popup zu öffnen und die Nachricht zu übergeben? Nicht genau hier im Fluss. – DelightedD0D