Javascript 向父级发送数据的动态iframe
我想提前买一份SantaClaus的礼物。。。我的文档中有两个脚本,第一个('init.js')放在头部,第二个('index.js')放在文档末尾的/html标记之前一旦页面内容被加载,init.js就定义了很多变量,这些变量可用于以后的“index.js”加载 在“init.js”中构建动态iframe:Javascript 向父级发送数据的动态iframe,javascript,html,iframe,Javascript,Html,Iframe,我想提前买一份SantaClaus的礼物。。。我的文档中有两个脚本,第一个('init.js')放在头部,第二个('index.js')放在文档末尾的/html标记之前一旦页面内容被加载,init.js就定义了很多变量,这些变量可用于以后的“index.js”加载 在“init.js”中构建动态iframe: let ifrm = document.createElement( 'iframe' ); ifrm.id = "getuserdata"; ifrm.setAttribute("sr
let ifrm = document.createElement( 'iframe' );
ifrm.id = "getuserdata";
ifrm.setAttribute("src", "getuserdata.html");
document.body.appendChild( ifrm );
在iframe中计算数据后,数据将发送给父级:
parent.getVals(data);
父级关闭iframe并创建'index.js'的值
function getVals(data){
document.getElementById('getuser').outerHTML = "";
delete document.getElementById('getuser');
let userdata = data;
}
一切都很好,但是。。。但是iframe中的console.log(data)用于验证数据是否正确,当iframe存在时,它会在我的控制台顶部显示数据值(正常,它是‘init’)。但是当它消失时(iframe被删除),在加载页面内容并显示第一个'index.js'console.log之后,脚本继续发送console.log超过40或50次。你知道为什么吗?这不是一个很大的问题,但我不明白为什么在关闭iframe后会收到所有这些通知。您可以使用“消息”事件在子级和父级之间共享数据。如果可能的话,在codepen或jsfiddle.yes中创建一个演示,但对于如此小的数据,这两个部分的消息都是大量的代码。在生成内容的整个过程中,当我需要与iframe对话时,我使用message。当我们创建iframe时,它会在父dom中创建另一个dom。所以只有一种沟通方式就是事件。你不能直接从孩子到父母沟通,反之亦然。你可以尝试一些黑客,但我认为这不是一个正确的方法。是的,它是有效的,在iframe中生成的数据可以立即在父级中获得,这不是要解决的问题。要解决(或解释)的问题是:为什么这个iframe一旦被删除,就会继续向父级发送40或50倍的数据?