コンテンツスクリプトのデータをpopup.html
に送信する方法がわかりません。クリックされた要素のxpath
です。私はクロムエクステンションにはとても新しいので、おそらくそれは明らかです。コンテンツスクリプトからpopup.js/htmlに送信されたメッセージを受け取る方法は?
私はメッセージの受け渡しに関する記事を読んだが、そこには混乱がある。
xpathget.js
からメッセージを送信する方法を理解しましたが、受信する方法がわからず、一部の要素をクリックすると閉じるので、popup.html
に表示されます。
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私はその後、popup.html
HTMLを変更popup.js
にxpath
文字列を送信する必要がありますし、それが行わだと仮定し
$(document).ready(function() {
$('body').height(280);
$('html').height(280);
MESSAGE_GET_HANDLER(){
ALTER_THE_HTML;
}
});
。
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];
}
エクステンションで実際に何が起こっているのか詳しく説明できますか?ページ上の何かをクリックしてポップアップを開き、メッセージを渡すことになっていますか?ここの流れではっきりしない。 – DelightedD0D