簡體   English   中英

鉻擴展。 JS 適用於彈出窗口 window 而不是主要 window

[英]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?

解決方案:

  • 從 popup.html 中刪除 content.js
  • 寫一個單獨的popup.js
  • 由於 chrome.browserAction.onClicked 在您有彈出窗口時不起作用,您還將其內容移動到 popup.js 中,因此每次顯示彈出窗口時都會運行

彈出。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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM