0
バックグラウンドページからパネルにメッセージを渡すことはありません。たくさんの例や文書がありますが、イベントからはうまくいかないようです。Chrome devtoolsの拡張背景ページからパネル
ここにバックグラウンドページのリスナーがあります。
chrome.extension.onConnect.addListener(function (port) {
var extensionListener = function (message, sender, sendResponse) {
if(message.tabId && message.content) {
//Evaluate script in inspectedPage
if(message.action === 'code') {
chrome.tabs.executeScript(message.tabId, {code: message.content});
//Attach script to inspectedPage
} else if(message.action === 'script') {
chrome.tabs.executeScript(message.tabId, {file: message.content});
//Pass message to inspectedPage
} else {
chrome.tabs.sendMessage(message.tabId, message, sendResponse);
}
// This accepts messages from the inspectedPage and
// sends them to the panel
} else {
port.postMessage(message);
}
sendResponse(message);
}
// Listens to messages sent from the panel
chrome.extension.onMessage.addListener(extensionListener);
port.onDisconnect.addListener(function(port) {
chrome.extension.onMessage.removeListener(extensionListener);
});
});
このコードは、すべての "教科書" の例では正常に動作します。しかし、この文脈では、メッセージを送信し、イベントリスナーはそれを受け取らない。
chrome.tabs.onUpdated.addListener(function (tabId, changes, tabObject) {
if(changes.status && changes.status === "complete") {
if(tabObject.url) {
var command = 'console.log("url is ' + tabObject.url + '");';
chrome.tabs.executeScript(tabId, {code: command});
//** Trying to trigger message in background, which will pass message to panel.html */
// THIS DOES NOT WORK!!! //
var message = {content: "hello console"};
chrome.extension.sendMessage(message);
}
}
});
誰も私が間違ってやっているものを見るかのメッセージがonUpdatedイベント内でピックアップされていない理由を知っていることはできますか?
これは、パネル内でトリガーされるコードです。他のシナリオでも機能します。
(function createChannel() {
//Create a port with background page for continous message communication
var port = chrome.extension.connect({
name: "Channel between inspected page" //Given a Name
});
// Listen to messages from the background page
port.onMessage.addListener(function (message) {
document.getElementById("textareaconsole").value = message.content;
});
}());
あなたは好奇心旺盛であれば、私はそれが特定のドメインでない場合はデベロッパーツールの拡張機能を無効にしようとしています。ありがとうございました。
のおかげで、ありがとうございます。バックグラウンドからパネルにデータを送信しようとしています。 –
次に、ポートを使用します。 – wOxxOm
ありがとう!それが修正だった。ポートがアクセス可能なOnConnectにコードを移動すると、コードは機能します。 –