Javascript 将EventListener添加到iFrame

Javascript 将EventListener添加到iFrame,javascript,jquery,events,mouse,Javascript,Jquery,Events,Mouse,我正在尝试将事件侦听器添加到iframe对象内的mouseup: $("#myIFrame").contents().find("body").bind("mouseup", function() { //e.preventDefault(); //doesn't make difference alert('inside'); }); 这不管用。有什么想法吗?在chrome上试试这个,刚刚测试过 据我所知,Iframe必须来自同一个域 <!DOCTYPE html>

我正在尝试将事件侦听器添加到iframe对象内的mouseup:

$("#myIFrame").contents().find("body").bind("mouseup", function() {
    //e.preventDefault(); //doesn't make difference
    alert('inside');
});

这不管用。有什么想法吗?

在chrome上试试这个,刚刚测试过

据我所知,Iframe必须来自同一个域

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title> - jsFiddle demo</title>
    <script type='text/javascript' src='//code.jquery.com/jquery-1.8.3.js'></script>

    <script type='text/javascript'>
        $(window).load(function () {            
            var $frame = $("#myIFrame");
            $frame.contents().bind("mouseup", function (e) {
                alert('inside');
            });
        });
    </script>
</head>
<body>
    <iframe id="myIFrame" src="/WebForm4.aspx" style="position:absolute; width:500px; height:500px;left:0px; top:50px"></iframe>
</body>
</html>

-JSFIDLE演示
$(窗口).load(函数(){
var$frame=$(“#myIFrame”);
$frame.contents().bind(“mouseup”,函数(e){
警惕(“内部”);
});
});
试试这个。在jsfiddle中工作。享受。

这将有效:

 $('#myIFrame').load(function(){
     //then set up some access points
     var contents = $(this).contents(); // contents of the iframe
     $(contents).find("body").on('mouseup', function(event) { 
         alert('test'); 
     });
 });

如果您只是想要一种普通的Javascript方式,可以使用以下方法:

var iframe = document.getElementById('myIFrame');
iframe.contentDocument.body.addEventListener('mouseup', Handler);

function Handler() {
    alert('works');
}

绑定到IFRAME中的事件可能会有问题,因为这样做有时会捕获用于IFRAME本身承载的内容的事件;处理方式因浏览器而异。这会给您带来什么?--><代码>警报($(“#myIFrame”).contents().find(“body”).length)当然,iFrame显示的是来自同一域的页面,具有相同的端口和协议?@DhavalMarthak I get1@adeneo是的,相同的域/端口/协议在JSFIDLE上不起作用,因为它将该脚本标记为CDATA。在本地计算机上尝试此操作。有时
contentDocument
不存在,因此请尝试使用
contentWindow
代替它。示例:是的,在Chrome79中,此代码仅在将其更改为
iframe.contentWindow.document.addEventListener('mouseup',Handler)时对我有效
var iframe = document.getElementById('myIFrame');
iframe.contentDocument.body.addEventListener('mouseup', Handler);

function Handler() {
    alert('works');
}