gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 18:42:54 27 4
gpt4 key购买 nike

我正在尝试将事件选项卡 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com