javascript - 从外部弹出窗口访问功能

标签 javascript google-chrome google-chrome-extension

我正在开发一个谷歌扩展,我使用它创建了一个弹出窗口:

chrome.browserAction.onClicked.addListener(function() {
  chrome.windows.create({'url': chrome.extension.getURL("info.html"), 'type': 'popup'}, function(window) {
 });
});

它打开一个本地 HTML 页面 (info.html),其中包含另一个脚本。我想在其中访问后台脚本中的某些功能。 我已经尝试过了:

var mypage = chrome.extension.getViews({"type":"popup"});
mypage.Somefunction();

第一行返回空,我认为问题在于该页面不在 chrome.extension 范围内。

如有任何提示,我们将不胜感激。

更新#1

这个我也试过了。然而, 如果使用 extension.getBackgroundPage() 方法,当我在 background.js 中有一个函数时:

function changedemo(){
  document.getElementById("demo").innerHTML = 'Well'
}

当我在脚本中调用它时使用:

window.addEventListener("load",function(){
  backgroundPage.changedemo();
});

我收到Uncaught TypeError: Cannot set property 'innerHTML' of null 即使它是由监听器处理的。

最佳答案

后台页面和弹出页面的范围不同。 您可以使用Message Passing从后台脚本访问函数

更好的方法:

var background = chrome.extension.getBackgroundPage(); 
background.Somefunction();

关于javascript - 从外部弹出窗口访问功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37830901/

相关文章:

css - 从 manifest.json 中的 content_scripts 中排除域对 CSS 文件不起作用?

javascript - 在将资源加载到 Webextensions 中之前,如何根据内容阻止资源?

javascript - 无法识别的帧操作码 : 5 and web socket closes

Javascript 转义字符 href html

javascript - 用于 excel 导入的 javascript 生成的 csv 中的换行符

javascript - 如何在 IE 中调试 "Back Navigation Caching"?

python selenium chrome webdriver 给我数据;页

javascript - 如何从内容脚本访问事件选项卡的事件处理程序?

javascript - 你能给 Dart 中的函数添加属性吗?

javascript - console.log 不在弹出的 chrome 扩展中打印