javascript - 在 iFrame 中设置元素值 - Chrome 扩展

标签 javascript iframe google-chrome-extension

我正在尝试将事件选项卡 Url 设置为已在 chrome.browserAction.onClicked 上注入(inject)的 Iframe 内的表单字段。

问题是由于安全策略(主页和 iframe 的来源不同),我无法从 内容脚本 访问 iframe。 主网页是外部页面。例如。维基百科.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>

当单击扩展图标时,我将一条消息传递给内容脚本以注入(inject) iframe,加载后,我想设置字段值。

我已引用此链接Access iframe from content script但找不到解决方案。

如有任何帮助,我们将不胜感激。

最佳答案

如果您需要将简单数据传递到新创建的 iFrame,您可以在 iFrame 的 src 中使用查询字符串。
创建 iFrame 时:

var winLoc = window.location.href; //I think this is what you want to send to your iFrame and populate field value

iframe.src = chrome.runtime.getURL('popup.html?'+winLoc );

在您的 iFrame 脚本中拆分 url:

var activeUrl = location.href.split('?')[1];  
//activeUrl now contains passed data

这样您就可以连接任意数量的“简单”数据

关于javascript - 在 iFrame 中设置元素值 - Chrome 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35863481/

相关文章:

javascript - 我可以使用 javascript 延迟某些 div 的加载吗?

javascript - 获取所有非唯一值(即 : duplicate/more than one occurrence) in an array

javascript - 为 HTML 树添加折叠和展开 + 标记

javascript - 在页面中注入(inject)第 3 方 HTML(带有脚本)

javascript - 谷歌浏览器扩展的自动化测试

google-app-engine - 如何为 Chrome 扩展设置 App Engine 后端?

javascript - Javascript 中文件数组的字符串 View

javascript - iFrame 中的 cordova 回调

php - 使用隐藏的 Iframes 运行 PHP 脚本 - 好吗?坏的?意见?

google-chrome - 如何在 chrome 扩展 contentScript 中启用获取 POST?