这是我遇到的一个非常具体的问题,但是我没有关于如何调试这个问题的想法,或者甚至发现它是否适用于移动浏览器. 我有2个页面(都在SAME域上,因此我没有跨域安全策略的问题),一个在另
我有2个页面(都在SAME域上,因此我没有跨域安全策略的问题),一个在另一个内部的iframe中.由于我需要捕获父项和子项的点击,我创建了一个覆盖iframe的div,然后调用子元素上的click方法:
这是我制作的演示代码:
父文件:
<script> $(document).ready(function() { $("#floating_play_button").click(function() { alert("just clicked floating_play_button... will try to click iframe's on click for link2"); $('#slider').contents().find("#link1").click(); }); }); </script> <div id="floating_play_button" style="cursor:pointer; left: 0px; top:0px; width:100%; height:395px; position:absolute; border:2px solid red;"></div> <iframe id="slider" src="slider_test.php" width="957" height="337" frameBorder="1" style="border:2px solid green;" ></iframe>
子页面:
<script> $(document).ready(function() { $("#link1").click(function() { alert("#link1 clicked..."); }); }); </script> <div id="link1"> <a href="#">Link 1</a><br /> </div>
这适用于所有桌面浏览器,但不适用于Chrome for Android(2013年7月22日版本)默认的Android浏览器,iPad和iPhone.
在子页面中,我尝试了这两种形式,但都没有工作:
$(document).on('click', '#link1', function() { alert("on click activated for link1"); }); $("#link1").click(function() { alert("#link1 clicked..."); });
作为补充说明,选择器很好.我可以做一些事情,比如通过jQuery更改文本属性和类似的东西,它工作正常.我只是无法调用click事件.
任何提示或指示?
谢谢!
Chrome不允许访问iframe的内容.即使内容具有相同的来源.您应该使用postMessage在帧之间进行通信.
也许这有助于:
cross-window-messaging-with-postmessage