我想从IFRAME像每隔几秒钟传递消息给父页面:
Iframe Domain = www.abc.com
Parent Domain = www.xyz.com
有检查有:
- 跨域iframe的问题
- https://stackoverflow.com/questions/5203741/jquery-cross-iframe-script-loading-ownerdocument-issue
有人可以帮我吗?
我想从IFRAME像每隔几秒钟传递消息给父页面:
Iframe Domain = www.abc.com
Parent Domain = www.xyz.com
有检查有:
有人可以帮我吗?
我最近刚帮另一个人有一个非常类似的担忧,I-帧之间传递消息。 (见的IFrame与家长之间,跨文档通讯问题 )。
使用我从suamikim在上述话题借用代码的修改版本,我已经集成了一个定时器。 这应该作为一个很好的起点为您服务。 这些家长和孩子的html页面将努力通过Amadan以上评论只是描述跨域。 我只是测试,并确认它,通过将parent.html在一个域,其指出child.html在一个完全独立的非信任域。
parent.html
<html> <head> <script type="text/javascript"> function parentInitialize() { var count = 0; window.addEventListener('message', function (e) { // Check message origin etc... if (e.data.type === 'iFrameRequest') { var obj = { type: 'parentResponse', responseData: 'Response #' + count++ }; e.source.postMessage(obj, '*'); } // ... }) } </script> </head> <body style="background-color: rgb(72, 222, 218);" onload="javascript: parentInitialize();"> <iframe src="child.html" style="width: 500px; height:350px;"></iframe> </body> </html>
child.html
<html> <head> <script type="text/javascript"> function childInitialize() { // ... try { if (window.self === window.top) { // We're not inside an IFrame, don't do anything... return; } } catch (e) { // Browsers can block access to window.top due to same origin policy. // See https://stackoverflow.com/a/326076 // If this happens, we are inside an IFrame... } function messageHandler(e) { if (e.data && (e.data.type === 'parentResponse')) { // Do some stuff with the sent data var obj = document.getElementById("status"); obj.value = e.data.responseData; } } window.addEventListener('message', messageHandler, false); setInterval(function () { window.parent.postMessage({ type: 'iFrameRequest' }, '*'); }, 1000); // ... } </script> </head> <body style="background-color: rgb(0, 148, 255);" onload="javascript: childInitialize();"> <textarea type="text" style="width:400px; height:250px;" id="status" /> </body> </html>
祝好运!