[英]Chrome extension. JS works on popup window and not on main window
所以,我有麻煩。 我正在制作一個 chrome 擴展程序,我有 popup.html(帶積分的窗口)、content.js、background.js(點擊即可使用)。 主要問題是,當我點擊擴展 background.js 的圖標時,我點擊了它並開始在彈出頁面上工作,而不是在我需要的頁面上工作。 我試圖在 popup.js 中制作它,但同樣的,它在 popup.html 頁面上工作,而不是在主頁上。 如何更改js代碼?
content.js 的主要部分:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if( request.message === "clicked_browser_action" ) {
var name = window.location.href;
subject = name.substr(name.indexOf("/",1)+2,name.indexOf("-",1)-name.indexOf("/",1)-2);
exam = name.substr(name.indexOf("-",1)+1,name.indexOf(".",1)-name.indexOf("-",1)-1);
myLoop();
}
}
);
背景.js:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
var activeTab = tabs[0];
chrome.tabs.sendMessage(activeTab.id, {"message": "clicked_browser_action"});
});
});
聽起來您在 popup.html 中包含 content.js。 這是錯誤的。 內容腳本適用於 web 頁面,但 browser_action(或 page_action)彈出窗口是具有自己的chrome-extension://
URL、DOM、 document
的擴展頁面。 在 Chrome 瀏覽器中,您可以通過在彈出窗口中右鍵單擊,然后單擊“檢查”來檢查它。 另請參閱如何訪問網頁 DOM?
解決方案:
彈出。html:
<script src=popup.js></script>
popup.js:
// this will run every time the popup is shown
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
var activeTab = tabs[0];
chrome.tabs.sendMessage(activeTab.id, {"message": "clicked_browser_action"});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.