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

2024-02-08

我需要使用任何 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 内的鼠标右键单击事件。

谁能帮帮我吗。


如果页面内有可能iframe位于同一域上。

同一域的 IFrame 页面: http://fiddle.jshell.net/rathoreahsan/MNtw8/8/show/ http://fiddle.jshell.net/rathoreahsan/MNtw8/8/show/

参见演示: http://jsfiddle.net/rathoreahsan/gJtkW/ http://jsfiddle.net/rathoreahsan/gJtkW/

而如果您访问某个域内其他域的页面iframe就像你正在做的那样,不建议这样做。

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

  1. iframe 跨域策略问题 http://www.cakemail.com/the-iframe-cross-domain-policy-problem/

  2. 跨域 iframe 调整大小 http://css-tricks.com/cross-domain-iframe-resizing/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用jquery捕获iframe内的鼠标右键单击事件 的相关文章

随机推荐

  • NodePort 服务并非在所有节点上均可用

    我正在尝试运行 3 节点 Kubernetes 集群 我已经充分启动并运行了集群 以便在不同的节点上运行服务 不幸的是 我似乎无法让基于 NodePort 的服务正常工作 因为我无论如何都理解正确性 我的问题是 我定义的任何 NodePor
  • 是否可以在监视任务之后运行任务?

    我有一个基于 PHP 的项目无法运行grunt php https github com sindresorhus grunt php 相反 我使用grunt 执行 https github com jharding grunt exec运
  • 如何获取 RecyclerView ItemDecoration 中的偏移量

    我写了两个ItemDecorator s for RecyclerView 每个都添加了一些顶部偏移量getItemOffsets 比方说 第一个装饰器添加 20dp 顶部偏移 第二个 dector 添加 30dp 顶部偏移 现在 当我将它
  • 语法错误,意外的 T_PRINT,期望 T_STRING [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我收到此错
  • w7 上的 Vagrant:找不到任何盒子

    我是 stackoverflow 的新手 这是我的第一个问题 我有一个问题Vagrant当尝试在私人存储库上获取一个盒子时 我尝试在 Atlas 上获取 hashicorp precise64 但我遇到了同样的问题 流浪者找不到盒子 我在用
  • 错误:“schemaLocation 值 *** 必须具有偶数个 URI。”关于 Spring 调度程序中的命名空间

    我收到以下错误
  • EF Code First 强制预加载

    我将 EF 5 与 Code First 结合使用 我有一个类 我想总是急切地加载一些属性 我删除了virtual关键字但它不是急切加载 public class Person public ICollection
  • Xcode 中这些黄色间隔符是什么?

    刚回到我的办公桌前 Xcode 不断突出显示 下划线文件中的空白区域 如果我输入一些内容 它就会消失 但如果我切换选项卡并返回 它们就会重新出现 更新 这不是由 显示不可见 选项引起的 这看起来不同 尝试一下 您似乎正在进行搜索 查看顶部的
  • iOS - 如何预加载键盘?

    问题 在大多数 iPhone 应用程序中 第一次出现键盘时会有相当多的延迟 可能创建键盘需要相当多的精力 即使在 iPhone 4 上也是如此 大多数人似乎对此表示同意 我不是 这真的让我烦恼 而且我的应用程序的呈现方式 用户会感到非常困惑
  • 检查数据框是在 Pandas 中复制还是查看

    有没有一种简单的方法来检查两个数据帧是否是不涉及操作的相同基础数据的不同副本或视图 我试图掌握每个规则的生成时间 并且考虑到规则看起来有多么特殊 我想要一种简单的测试方法 例如 我认为 id df values 在不同视图中是稳定的 但它们
  • Rails own_to 关联,作为集合的一部分时无法访问所有者的属性?

    我有一个物体 球 它属于一个女孩 它可以有很多球 大多数情况下一切正常 但如果我尝试通过以下方式打印出女孩的名字 balls each do b b girl name end 我收到以下错误 undefined method name f
  • 监听 Flutter SQFLite 数据库中的实时变化

    我创建了一个功能齐全的应用程序Flutter 它用sqflite https pub dev packages sqflite用于存储数据的插件 我想要一个数据更改监听器 当添加或更新新数据时 它将更新或刷新数据 我怎样才能做到这一点 我遇
  • 具有外部 IP 的 Google 容器引擎,无负载均衡器

    我能够连接到 Kubernetes 中 pod 中运行的应用程序 但这是使用负载均衡器网关 根据此处的文档 https cloud google com container engine docs tutorials http balanc
  • 如何在 splinter 中选择 class 、 div 、 tag ?

    我想了解 splinter 的功能 我试图在网上找到 但我找不到关于 splinter 的实用示例的良好文档 所以我在这里问了几个问题 以便它将帮助尝试学习 splinter 的初学者 首先我很困惑splinter中实际的CSS选择器是什么
  • 有没有办法从 UTF8 转换为 ISO-8859-1?

    我的软件获取的一些 UTF8 字符串需要转换为 ISO 8859 1 我知道 UTF8 域比 ISO 8859 更大 但是 UTF8 中的数据之前已从 ISO 上转换 因此我不应该错过任何内容 我想知道是否有一种简单 直接的方法可以将 UT
  • Chrome 扩展程序替换当前文本区域中的单词

    我正在尝试制作一个 chrome 扩展来替换当前输入的最后一个单词
  • express.js 在路由时不显示 console.log 消息

    注 我很新表达 var express require express var app express app get function req res res send id req params id and name req para
  • 如何将 UISlider 更改为垂直?

    我正在定制一个UISlider对于我的应用程序 我希望滑块处于垂直方向 但默认UISlider处于水平方向 我找不到如何更改UISlider的方向 如何在 XCode 中制作垂直滑块 默认情况下 UISlider 是水平的 如果您希望使其垂
  • 如何使用 Mustache.js 制作客户端 I18n

    我有一些静态 html 文件 想要通过 Mustache js 进行客户端修改来更改其中的静态文本 看来这可能是 Twitter 在 github 上的 Mustache 扩展 https github com bcherry mustac
  • 使用jquery捕获iframe内的鼠标右键单击事件

    我需要使用任何 javascript 或 jquery 代码捕获 asp net 中 iframe 内的鼠标右键单击事件 下面是我到目前为止尝试过的代码