繁体   English   中英

检测跨域iframe内的方向更改

[英]Detect orientation change from within cross-domain iframe

所以我有一个.jsp页面,里面有一个iframe。 此iframe的内容托管在单独的域中。 在移动设备上,我正在寻找这个iframe来检测方向更改并相应地更改内容的尺寸。

有没有办法向存储在此iframe中的内容添加事件监听器,以检测方向更改?

如果此内容不在iframe内,而是直接访问,则调用如:window.addEventListener('orientationchange',FunctionToBeCalled,false); 成功捕获方向更改并调用相应的功能。 但是,我似乎无法在iframe中使用它。 我已经尝试过parent.addEventListener,parent.window.addEventListener,top.addEventListener等,但无济于事。

从我读过的内容听起来好像是因为这是一个跨域调用,我可以使用非常有限的父功能,我注定要失败吗?

任何帮助将不胜感激。 谢谢!

如果您拥有父窗口的代码,则可以使用跨文档消息来解决此问题。 您可以将方向从父窗口发送到iframe。 这在跨域方案中也应该起作用。 我在iphone 4.3和android 2.2上测试了这个。

在父窗口中:注册方向更改并将其传输到iframe

window.addEventListener("orientationchange", function(){
                var iframe = document.getElementById("youriframe").contentWindow;
                iframe.postMessage({
                    orientation: window.orientation
                }, 'http://the.domain.of.the.iframe.com');
}, false)

在iframe中:订阅来自父级的方向更改

window.addEventListener("message", function(e){
            var newOrientationValue = e.data.orientation;
            alert(newOrientationValue); // <--- DO your own logic HERE
}, false)

有关详细信息,请查看此内容: http//html5demos.com/postmessage2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM