2016-05-17 3 views
1

ページ上でスクリプトを実行する際に問題が発生しています。ここでSciptがメッセージを送受信するために選択したタブで実行しない

は私background.jsは、次のようになります。

chrome.tabs.query({ 
    url: 'https://www.tradingview.com/*' 
}, function(tabs) { 
    if (tabs.length == 1) { 
    var tabURL = tabs[0].url; 
    alert(tabURL); 
    alert(tabs[0].id); 
    chrome.tabs.executeScript(tabs[0].id, {file: "getTradingData.js"}, function(){ 
     chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) { 
      console.log(response.farewell); 
      }); 
    }); 
    } else { 
    alert("Please have one and only one tradingview chart page opened."); 
    } 
}); 

chrome.tabs.executeScript(tabs[0].id, {file: "getTradingData.js"}スクリプトgetTradingData.jsを実行する必要がありますが、私はそれがあるとは思いません。私はスクリプトで実行されていない警告を持っていますが、ページを更新するとコンテンツスクリプトとして実行されます。

ここで、ny getTradingData.jsは次のようになります。 alert( "getTradingData.js is Running");

var myPort = chrome.extension.connect();私は "tradingview.com/chart/*" と延長background.jsの間でデータを送信できるようにする必要があり

{ 
    "manifest_version": 2, 

    "name": "Automated TradingView Strategy", 
    "description": "This extension shows a Google Image search result for the current page", 
    "version": "1.0", 

    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
    }, 
    "background": { 
    "scripts": ["jquery-2.2.3.min.js", "background.js"] 
    }, 
    "content_scripts": [ 
    { 
     "matches": ["https://www.tradingview.com/chart/*", "http://www.tradingview.com/*"], 
     "js": ["jquery-2.2.3.min.js", "getTradingData.js"] 
    } 
    ], 
    "permissions": [ 
    "activeTab", 
    "tabs", 
    "https://ajax.googleapis.com/" 
    ] 
} 

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) { 
    alert("got message"); 
    if (request.subject == "getPrice") 
     sendResponse({ 
     msg: price 
     }); 
    }); 

は、最後にここに私のmanifest.jsonをです。ただし、メッセージを受信したり送信したりできないように、拡張機能を更新するときにスクリプトが読み込まれていません。

私が間違っていることを教えてください。

答えて

2

executeScriptを使用してgetTradingData.jsを実行するには、permissionsにサイトのアドレスを追加する必要があります。 backgroundから

"permissions": ["*://*.tradingview.com/*", "tabs"] 

あなたは{greeting: "hello"}を送っていますが、getTradingData.jsにこれらのデータを受け付けておりません。したがって、あなたは応答を得ません。

console.log(response.farewell); 

response.farewellは送信しません。それらは表示されません。


if (request.subject == "getPrice") { 

    sendResponse({msg: price}); 
} 

同じ。アラートだけが表示されます。

Programmatic injection

+0

ありがとうございます。許可は、私が行方不明だったものでした。私は今日拡張機能をコードすることを学び始めたので、残りの部分を理解するために最善を尽くします。 – Pabi

関連する問題