Capture mouse right click event inside a iframe us

2019-02-26 18:48发布

问题:

I need to capture right mouse click event inside a iframe in asp.net using any javascript or jquery codes.

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.

Can anyone please help me.

回答1:

It is possible if the page inside an iframe is on the same domain.

IFrame page at same domain: http://fiddle.jshell.net/rathoreahsan/MNtw8/8/show/

See Demo: 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.

Edited: See some references given below, hope it will be helpful.

  1. the-iframe-cross-domain-policy-problem

  2. cross-domain-iframe-resizing



回答2:

Hey: this might help:

How Enable Right Click in IFRAME with JavaScript

or

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. iframes are very limited for many many security reasons.

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

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

cheers,