【发布时间】:2016-03-09 06:14:52
【问题描述】:
我正在尝试将活动选项卡 URL 设置为我在 chrome.browserAction.onClicked 上注入的 Iframe 中的表单字段。
问题是由于安全策略(主页和 iframe 的来源不同),我无法从 content script 访问 iframe。
主网页是外部页面。例如。 wikipedia.com
这是我迄今为止尝试过的。
content_script.js
function onExtensionMessage(request) {
if (request['iconClicked'] != undefined) {
var extensionOrigin = 'chrome-extension://' + chrome.runtime.id;
if (!location.ancestorOrigins.contains(extensionOrigin)) {
var urlvalue = location.href;
var iframe = document.createElement('iframe');
iframe.setAttribute("id", "iFrameS");
iframe.src = chrome.runtime.getURL('popup.html');
iframe.addEventListener('load', function (e) {
// Either set the value of input element in Iframe
// here or pass an event to background.js and set it from there
chrome.extension.sendRequest({'frameloaded': true});
}, false);
document.body.appendChild(iframe);
}
return;
}
}
function initContentScript() {
chrome.extension.onRequest.addListener(onExtensionMessage);
}
initContentScript();
popup.html
<form method="post">
<input id="url" type="text">
</form>
单击扩展图标后,我向内容脚本传递一条消息以注入 iframe,一旦加载,我想设置字段值。
我已参考此链接Access iframe from content script,但找不到解决方案。
任何帮助将不胜感激。
【问题讨论】:
-
all_frames 已在清单文件中设置为 true。如何从内容脚本中设置 id=url 的输入字段的值?
-
@gaemaf:我知道如何在内容脚本和背景页面之间传递消息。如何在 iframe 中设置字段的值?
-
@gaemaf:如果我使用弹出窗口,解决方案很简单,但如果我点击弹出窗口外的任何位置,弹出窗口就会关闭。除了在弹出窗口上执行检查元素之外,没有办法强制弹出窗口保持打开状态。我唯一的选择是使用 iframe。
-
如果我很好理解,你想在 iframe 中注入一个页面,然后在这个 iframe 中设置一些值。您已成功注入 iframe,在其中成功加载页面,现在您正在尝试在其中设置值?
-
@EmrysMyrooin:是的,你是对的!
标签: javascript iframe google-chrome-extension