【发布时间】:2012-07-05 07:52:32
【问题描述】:
我正在编写一个 chrome 扩展程序并有一个问题。
我的扩展中有一些 .html 页面,让它成为“popup.html”。我将内容脚本注入到某个页面中,该脚本在新选项卡中打开一个“popup.html”,其中包含“var p = window.open(chrome.extension.getURL('/popup.html'), "popup" )',效果很好。接下来,我需要将一些数据传递给这个窗口,我不知道如何以简单的方式完成。
由于某种原因,我无法从内容脚本中调用子窗口的函数
var p = window.open(chrome.extension.getURL('/popup.html'), "popup");
p.foo(data);
在控制台中我看到 Uncaught TypeError: Cannot call method 'foo' of undefined 消息。
我无法在查询字符串中传递数据,因为数据太大了。
有没有一种优雅而简单的方法可以将数据传递到这种窗口?我考虑过消息传递,但是如何使用背景页面有效地获取新打开的窗口的标签 ID?
非常感谢。
更新:
我试图反转逻辑并使用“window.opener.foo()”从父窗口获取数据,但在新打开的选项卡中window.opener 返回null。
【问题讨论】:
-
我认为这个问题更正确的标题应该是“打开并将数据传递到新选项卡”。
popup是 Chrome 扩展程序中的一个特定术语,它似乎不是您使用的。