从外部弹出窗口访问功能

时间:2016-06-15 09:06:16

标签: javascript google-chrome google-chrome-extension

我正在使用Google扩展程序,我使用以下方法创建了一个弹出窗口:

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,即使它是由听众处理的。

1 个答案:

答案 0 :(得分:0)

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

更好的方法:

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