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

Javascript 使用jquery捕获iframe中的鼠标右键单击事件,javascript,jquery,asp.net,iframe,Javascript,Jquery,Asp.net,Iframe,我需要使用任何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/java

我需要使用任何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>

检测IFrame点击
document.onmousedown=onMousebtClick
var isOverIFrame=false;
$(文档).ready(函数(){
函数processMouseOut(){
isOverIFrame=false;
top.focus();
}
函数processMouseOver(){
isOverIFrame=true;
}
函数processIFrameClick(){
if(isOverIFrame){
日志(“单击嘿:这可能会有帮助:

恐怕这是不可能的。当你在iframe中时,你是 在第二个标签中…除非你拥有 iframe和您可以将您的Javascript放在页面上 这是不可能的。iFrame对于许多安全性来说是非常有限的 原因

请让我知道,如果有人不这样认为,很高兴把这个职位

尽管尝试一下这里提到的这个黑客:

此处


干杯,

如果
iframe
中的页面位于同一个域中,则有可能

同一域中的IFrame页面:

请参见演示:

但是,如果您像现在这样访问
iframe
中其他域的页面,则不建议这样做

编辑:请参阅下面提供的一些参考资料,希望对您有所帮助


  • 我只是在那个asp.net论坛网站上发布了这个问题。我必须想个办法来解决这个问题。很抱歉投了反对票。@Neon哈哈哈哈哈:)哈哈,你答对了吗?我会删除我的帖子,但让我知道这是否可行,不需要黑客
    :)
    哦,你投了反对票是因为?…谢谢你的回复。我需要解决这个问题。如果你以后有什么想法,请回复。@Neon我在上面粘贴了一个有用的链接,尝试使用
    上下文菜单
    anyhoo不值得投反对票的人,asp.net不支持该标记。你能建议其他方法吗?谢谢回复。有什么建议吗asp.net中有iframe的替代品吗?:)正是我试图向你解释brother Get-1:)++1,但是如果我可以看到上面的链接,javascript注入在任何情况下都是不好的。
    :)
    @Ahsan。。谢谢你的回复。。我尝试了你的演示url并实现了它。当我运行程序时,它显示了一条错误消息。”Microsoft JScript运行时错误:权限被拒绝"。为什么我会出现此错误?请帮助我解决。:)通常,如果家长试图控制不同域中的iframe,您将收到此错误。@AhsanRathod感谢您的回复。。我会注意这一点并向您发送反馈。我还有一个问题。。当通过as中的iframe加载SWF文件时,我们可以禁用右键单击SWF文件吗第页。