如何访问页面的脚本上下文

How to Get Access to Page's Script Context

我的插件使用内容脚本与页面交互。但它也需要访问页面的 javascript 以便它可以 运行 页面的例程之一。所以我的内容脚本需要访问页面的脚本上下文。

这就是我的意思。

插件使用 main.js 访问 content.js 并使用消息传递进行通信。

但是网页(content.js 被注入)有它自己的 javascript。我的 content.js 需要访问该上下文,以便它可以从那里的变量中获取值。

如何才能得到它?

我有 been reading these mdn docs,但他们似乎在谈论您自己编码的 html 页面,就像您对首选项页面所做的那样。但就我而言,我正在使用外部网站,而不是仅为插件编码的内容。

这个有效:

var script = document.createElement("script");
script.innerHTML = "alert( myPageVar );";
document.body.appendChild( script );

Credit goes to this fellow.

不过,我不知道这是否是最好的方法。希望有比我知识渊博的人来回答。

以下是 return 值的方法:

var retval = unsafeWindow.SomePageFunction();
alert(retval);

之所以称为 "unsafe",是因为您永远不知道页面可能会更改或可能会发生什么变化。当插件 interacts with page scripts.

时就是这样

该方法 listed on the MDN page 也适用于外部页面,而不仅仅是您自己的页面。

unsafeWindow.myPageVar 会起作用。