我想将活动标签Url设置为我在chrome.browserAction.onClicked
上注入的iframe中的表单字段。在iFrame中设置元素值 - Chrome扩展
问题是由于安全策略(主页和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的输入字段的值? – Vaulstein
@gaemaf:我知道如何在内容脚本和背景页面之间传递消息。我如何在Iframe中设置字段的值? – Vaulstein
@gaemaf:如果我使用弹出窗口,解决方案很简单,但如果在弹出窗口外单击任何位置,弹出窗口将关闭。除了在弹出窗口上执行检查元素外,没有办法强制弹出窗口保持打开状态。我唯一的选择是使用iframe。 – Vaulstein