Chrome扩展程序:注入iframe的脚本无法访问其内容

时间:2018-01-16 16:32:03

标签: javascript html iframe google-chrome-extension firefox-webextensions

我有一个Chrome扩展程序加载iframe一些按钮,其功能我想用脚本控制,我注入iframe。但是,我无法使用document.getElementById()访问元素,而将document.body打印到控制台则显示为“null”。这是一个最小的例子:

主要内容脚本:

var iframe = document.createElement("iframe");
iframe.src = browser.extension.getURL("login_form.html");
document.body.appendChild(iframe);

iframe HTML(login_form.html):

<html>
  <head>
    <script src='login_form.js' type="text/javascript"> </script>
  </head>
  <body>
    <button id="login-button">Click me</button>
  </body>
</html>

JS插入iframe(login_form.js

console.log(document);
console.log(document.body);
console.log(document.getElementById("login-button"));

在这里,按预期方式对console.log的第一次调用会打印iframe的DOM。但是,以下两个调用返回“null”。

我见过的相关问题: 我知道跨域访问和iframe存在问题,但这似乎是一个不同的情况,因为iframe和JS都在同一个域(我的扩展名)下。我还看到了解决方案是用all_frames: true执行主内容脚本的其他问题,但我认为这种情况与我的情况不同,因为它不是内容脚本本身应该进入{{1} }。

感谢您的帮助!

0 个答案:

没有答案