如何访问页面's脚本上下文

How to Get Access to Page's Script Context

本文关键字:上下文 脚本 何访问 访问      更新时间:2023-09-26

我的插件使用内容脚本与页面交互。但它也需要访问页面的javascript,以便运行页面的某个例程。因此,我的内容脚本需要访问页面的脚本上下文。

这就是我的意思。

Addon使用main.js访问content.js,并使用消息进行通信。

但是网页(正在向其中注入content.js)有自己的javascript。我的content.js需要访问该上下文,这样它才能从那里的变量中获取值。

一个人怎么能得到它?

我一直在阅读这些mdn文档,但它们似乎是在谈论一个你自己编写的html页面,就像你对首选项页面所做的那样。但在我的情况下,我正在与一个外部网站合作,而不是仅仅为插件编码的东西。

MDN页面上列出的方法也适用于外部页面,而不仅仅适用于您自己的页面。

unsafeWindow.myPageVar将起作用。

这是有效的:

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

这要归功于这个家伙。

然而,我不知道这是否是最好的方法。我希望其他比我更有见识的人能回答。

以下是如何返回值:

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

它被称为"不安全",因为你永远不知道页面的内容可能会被更改或更改。插件与页面脚本交互时就是这样。