gpt4 book ai didi

javascript - 是否可以从扩展程序调用父网页的 iframe 中的函数

转载 作者:行者123 更新时间:2023-12-01 17:48:02 26 4
gpt4 key购买 nike

我在网页上加载了 iframe。是否可以从扩展调用父网页的 iframe 中的函数?

在 manifest.json 中完成了 all-frames:true

iframe.html如下:

<body>
<div class="row">
<button type="button" class="btn btn-primary" id="manual-dial" onclick="dial()";>DIAL</button>
</div>
</body>

content.js如下:

/* cnt access frame id */
chrome.runtime.sendMessage(window.parent.frames[1].document.id);
window.parent.frames[1].document.id.onload = function() {
// want to call dial() of iframe
chrome.runtime.sendMessage("this is my response");
}

background.js

chrome.runtime.onMessage.addListener(function(response,sender,sendResponse)   {
alert(response);
});

最佳答案

你可以试试这个:

iframe.html

<body> 
<div class="row">
<button type="button" class="btn btn-primary" id="manual-dial" onclick="dial()";>DIAL</button>
</div>
</body>

<script type="text/javascript">
function dial(){
var portName = "dialPort"
var port = chrome.runtime.connect({name: portName});

//this postMessage is just to stimulate the listener in the background.js
port.postMessage({any: "anyThing"});

// You can recive the reponse
port.onMessage.addListener(function(msg) {
/** Here you can exec any function **/
});

</script>

background.js

chrome.runtime.onConnect.addListener(function(port) {

if(port.name == "dialPort"){

port.onMessage.addListener(function(msg) {
/**
Here you can exec any function
**/

//And also, you can send the response to the iframe
port.postMessage({response: "Any Thing..."});

});
}});

您还可以查看 Chrome 文档,在这里您会找到更多实现 https://developer.chrome.com/apps/messaging#connect

希望对你有帮助😃

关于javascript - 是否可以从扩展程序调用父网页的 iframe 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34900741/

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