繁体   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