如何将Click事件分配给iframe中的元素?

时间:2012-09-04 20:36:29

标签: jquery

如何将click事件分配给ifraem中的元素?

我开了一个帖子来检测是否加载了iframe。

How can I detect whether an iframe is loaded?

我还有进一步的问题

如何在iframe中分配事件或操作元素?

我试过..

$(function(){
    $('#click').on('click', function(){
        var ifr=$('<iframe></iframe>', {
            id:'MainPopupIframe',
            src:'http://heera.it',
            style:'display:none',
            load:function(){
                $(this).show();
                alert('iframe loaded !');
            }
        });
        $('body').append(ifr);    

    //when I click the home page button, nothing happen...
    $('#menu-item-277').click(function(){
       alert('click!!!');
    })
    });
});
​

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

由于跨域安全限制(相同的原始策略),如果iframe的内容存在于父页面以外的域中,则无法进行此操作。

如果您有权访问这两个域,则可以尝试使用Ben Alman的优秀PostMessage插件来设置跨域/跨浏览器iframe通信流。然后,您可以绑定到本地DOM元素的click事件,并向iframe发送消息,其中轮询循环可以监听它并触发iframe中的click事件。

我希望这会有所帮助。

答案 1 :(得分:0)

你不能归因于same origin policy。基本上,iframe必须与尝试修改它的脚本位于同一个域中。