3
我想獲得一個成功注入的內容腳本,以向注入的基於AngularJS的Chrome擴展發送消息。將消息從內容腳本傳遞到基於Angular JS的Chrome擴展
注入控制器方法是這樣的:
$scope.selectElement = function() {
// Close the extension window
window.close();
window.chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
}
);
// Send content script to web page
window.chrome.tabs.executeScript(null, { file: 'app/bower_components/jquery/jquery.js' }, function() {
window.chrome.tabs.executeScript(null, { file: 'app/scripts/libs/dom_selector.js' });
});
};
注入腳本調用一旦網頁被點擊以下:
$(document).click(function(event) {
console.log($(event.target));
chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
console.log(response);
});
});
這火(出現在控制檯的第一個日誌消息) ,但第二條日誌消息僅打印undefined
。
我想也許window.close()
可能是問題,但window.chrome.tabs.executeScript
調用工作正常,所以我不知道爲什麼事件監聽器不會觸發。它在錯誤的地方嗎?我有一種感覺,因爲我應該只是在某個地方宣佈它,對吧?如果它在像這樣的控制器中,每次運行該方法時都會設置,然後每個偵聽器都會響應一個事件,導致事件響應被多次發送。它是否正確?
對此有何AngularJS指導,深受歡迎...