简体   繁体   English

使用jQuery捕获iframe中的鼠标右键单击事件

[英]Capture mouse right click event inside a iframe using jquery

I need to capture right mouse click event inside a iframe in asp.net using any javascript or jquery codes. 我需要使用任何javascript或jquery代码在asp.net的iframe中捕获鼠标右键事件。

below is the code i have tried so far. 下面是我到目前为止尝试过的代码。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Detect IFrame Clicks</title>

<script type="text/javascript" language="javascript" src="JScript/jquery-1.7.1.js"></script>

<script type="text/javascript" language="javascript" src="JScript/jquery.ui.core.js"></script>

<script type="text/javascript" language="javascript" src="JScript/jquery.ui.widget.js"></script>

<script type="text/javascript" language="javascript" src="JScript/jquery.ui.mouse.js"></script>

<script type="text/javascript">        
    document.onmousedown = onMousebtClick
    var isOverIFrame = false;
    $(document).ready(function() {
        function processMouseOut() {
            isOverIFrame = false;
            top.focus();
        }

        function processMouseOver() {
            isOverIFrame = true;
        }

        function processIFrameClick() {
            if (isOverIFrame) {
                log("CLICK << detected. ");
                onMousebtClick();
            }
        }

        function log(message) {
            var console = document.getElementById("console");
            var text = console.value;
            text = text + message + "\n";
            console.value = text;
        }

        function attachOnloadEvent(func, obj) {
            if (typeof window.addEventListener != 'undefined') {
                window.addEventListener('load', func, false);
            } else if (typeof document.addEventListener != 'undefined') {
                document.addEventListener('load', func, false);
            } else if (typeof window.attachEvent != 'undefined') {
                window.attachEvent('onload', func);
            } else {
                if (typeof window.onload == 'function') {
                    var oldonload = onload;
                    window.onload = function() {
                        oldonload();
                        func();
                    };
                } else {
                    window.onload = func;
                }
            }
        }

        function init() {
            var element = document.getElementsByTagName("iframe");
            for (var i = 0; i < element.length; i++) {
                element[i].onmouseover = processMouseOver;
                element[i].onmouseout = processMouseOut;
            }
            if (typeof window.attachEvent != 'undefined') {
                top.attachEvent('onblur', processIFrameClick);
            }
            else if (typeof window.addEventListener != 'undefined') {
                top.addEventListener('blur', processIFrameClick, false);
            }
        }

        attachOnloadEvent(init);

    });

    function onMousebtClick() {
        switch (event.button) {
            case 1:
                alert("leftclick");
                break;

            case 2:
                alert("right click");
                break;
        }
    }
    /*document.onmousedown = onMousebtClick*/
</script>

</head>
<body id="mybody">
<iframe src="http://www.microsoft.com" width="800px" height="300px" id="ifrm">
</iframe>
<br />
<br />
<form name="form" id="form" action="">
<textarea name="console" id="console" style="width: 300px; height: 300px;" cols=""
    rows=""></textarea>
<button name="clear" id="clear" type="reset">
    Clear</button>
</form>
</body>
</html>

i can able to detect right mouse click in body tag but i can't able to detect the right mouse click event inside the iframe. 我可以在body标签中检测到鼠标右键单击,但是无法在iframe中检测到鼠标右键单击事件。

Can anyone please help me. 谁能帮帮我吗。

It is possible if the page inside an iframe is on the same domain. iframe内的页面可能位于同一域中。

IFrame page at same domain: http://fiddle.jshell.net/rathoreahsan/MNtw8/8/show/ 位于相同域的iFrame页面: http //fiddle.jshell.net/rathoreahsan/MNtw8/8/show/

See Demo: http://jsfiddle.net/rathoreahsan/gJtkW/ 观看演示: http : //jsfiddle.net/rathoreahsan/gJtkW/

While if you access the page of an other domain inside an iframe like you are doing then it is not recommended. 如果您像这样访问iframe内的其他域的页面,则不建议这样做。

Edited: See some references given below, hope it will be helpful. 编辑:请参阅下面给出的一些参考,希望对您有所帮助。

  1. the-iframe-cross-domain-policy-problem 在-iframe的跨域-政策问题

  2. cross-domain-iframe-resizing 跨域的iframe调整大小

Hey: this might help: 嘿:这可能会帮助:

How Enable Right Click in IFRAME with JavaScript 如何使用JavaScript在IFRAME中启用右键单击

or 要么

http://forums.asp.net/p/1818670/5042726.aspx/1?Capture+mouse+right+click+event+inside+a+iframe+using+jquery+ http://forums.asp.net/p/1818670/5042726.aspx/1?Capture+mouse+right+click+event+inside+a+iframe+using+jquery+

This is not possible I'm afraid. 恐怕这是不可能的。 When you're inside the iframe, you're in a second tag... Unless you own what's inside the iframe and are able to put your Javascript on the page within then it's impossble. 当您位于iframe中时,您将处于第二个标签中...除非您拥有iframe中的内容并且能够将Javascript放到该页面中,否则它是不可能的。 iframes are very limited for many many security reasons. 由于许多安全原因,iframe非常有限。

Please let me know if anyone thinks otherwise, happy to take this post off. 如果有人有其他想法,请告诉我,很高兴取消这篇文章。

Although Try this hack mentioned here: http://www.codingforums.com/archive/index.php/t-8824.html 尽管尝试此处提到的此技巧: http : //www.codingforums.com/archive/index.php/t-8824.html

or here http://forums.mozillazine.org/viewtopic.php?f=19&t=371334 这里http://forums.mozillazine.org/viewtopic.php?f=19&t=371334

cheers, 干杯,

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

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