2

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

4

2 回答 2

7

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");

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

结果:

从其他页面发起的警报 控制台日志

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

火狐弹出窗口被阻止的通知

更新:

这样做

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();

控制台输出

替代文字

打开页面

替代文字

于 2010-12-01T02:23:08.897 回答
3

使用 window.open() 加载页面并将其保存到变量中:

page=window.open('some.htm')

然后您可以使用此变量访问窗口并在其中调用函数:

page.someFunction()
于 2010-12-01T01:41:57.417 回答