我有一个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} }。
感谢您的帮助!