javascript - 如何让侧边栏执行主文档中的 javascript 代码?

标签 javascript firefox firefox-addon sidebar

我正在开发一个在主文档中加载网页的 firefox 边栏。 现在我想从主文档调用一个 javascript 函数以响应侧栏上的按下按钮。 侧边栏如何使主文档执行其 javascript 函数之一? 到目前为止,我有一个包含 javascript 代码的变量,但是如何执行它呢? (在加载网站的上下文中?)

最佳答案

Molle 博士的回答是正确的,但我总是喜欢工作示例。

console.log("Opening new page at http://example.com");
page = window.open('http://example.com');
console.log(page);
console.log("calling alert on opened page");
page.alert("I opened and the previous windows JS called me!!!!");
console.log("called alert");

示例页面 => [已删除。请参阅下面的更新]

结果:

alert initiated from other page console logs

注意: 我必须允许演示代码的弹出窗 Eloquent 能工作,但这是另一个 SO 问题的另一个问题。 ; )

firefox popup blocked notice

更新:

这样做

page.alert()

之所以有效,是因为它不必等待页面完成加载就可以工作。为了能够调用函数是加载页面上的脚本,您必须确保脚本已完成加载。为了说明这一点,我更改了示例。

示例页面 => http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-call-function-in-opened-page.html

JS 看起来像这样

page = window.open('http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-the-other-page.html');

var initOtherPage = function() {
  try {
    page.showMeTheMoney();
    console.log("It worked!");
  } catch (e) {
    console.log("failed to call function on other page because: "+e);
    setTimeout(function() {
      console.log("trying again")
      initOtherPage();
    }, 1000);
  }
}
initOtherPage();

控制台输出

alt text

打开的页面

alt text

关于javascript - 如何让侧边栏执行主文档中的 javascript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4320025/

相关文章:

javascript - 需要选择默认选项

javascript - 如何从相同的文件名导入接口(interface)定义?

javascript - window.frames.length 在 chrome 和 Firefox 浏览器中返回 0

firefox - 控制 firefox add-on sdk 侧边栏宽度

image - 在 Firefox 中出现图像映射问题

javascript - 将点击的元素传递给 Firefox 中的上下文菜单操作

firefox-addon - 我如何编写我的附加组件以便 Firefox 知道在哪里检查更新?

javascript - d3js堆积条形图未更新

javascript - 如何调试 PhoneGap 应用程序中的内存使用量攀升?

javascript - 响应 Firefox Add-on 中的地址栏按键事件