2

javascriptまたはjqueryコードを使用して、asp.netのiframe内でマウスの右クリックイベントをキャプチャする必要があります。

以下は、これまでに試したコードです。

<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>

body タグでマウスの右クリックを検出できますが、iframe 内でマウスの右クリック イベントを検出できません。

誰でも私を助けてください。

4

2 に答える 2

5

内のページiframeが同じドメインにある場合に可能です。

同じドメインの IFrame ページ: http://fiddle.jshell.net/rathoreahsan/MNtw8/8/show/

デモを参照してください: http://jsfiddle.net/rathoreahsan/gJtkW/

iframeあなたがやっているように、他のドメインのページにアクセスする場合はお勧めしません.

編集済み:以下の参考文献を参照してください。

  1. iframe-cross-domain-policy-problem

  2. クロスドメイン iframe サイズ変更

于 2012-06-27T10:36:56.463 に答える
2

ちょっと:これは役立つかもしれません:

JavaScript を使用して IFRAME で右クリックを有効にする方法

また

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

これは不可能です。iframe の内側にいるときは、2 番目のタグにいます... iframe の内側にあるものを所有していて、Javascript をページ内に配置できない限り、それは不可能です。多くのセキュリティ上の理由から、iframe は非常に制限されています。

誰かがそうでないと思う場合はお知らせください。この投稿を喜んで取り下げます。

ここに記載されているこのハックを試してくださいhttp://www.codingforums.com/archive/index.php/t-8824.html

またはここhttp://forums.mozillazine.org/viewtopic.php?f=19&t=371334

乾杯、

于 2012-06-27T09:39:20.883 に答える