当前位置 : 主页 > 手机开发 > 无线 >

在移动浏览器中,JQuery点击事件不适用于iframe

来源:互联网 收集:自由互联 发布时间:2021-06-10
这是我遇到的一个非常具体的问题,但是我没有关于如何调试这个问题的想法,或者甚至发现它是否适用于移动浏览器. 我有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

网友评论