使用 jquery 在 iframe 中捕获鼠标右键单击事件
Posted
技术标签:
【中文标题】使用 jquery 在 iframe 中捕获鼠标右键单击事件【英文标题】:Capture mouse right click event inside a iframe using jquery 【发布时间】:2012-06-28 16:59:39 【问题描述】:我需要使用任何 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" 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 内的鼠标右键单击事件。
谁能帮帮我。
【问题讨论】:
【参考方案1】:嘿:这可能会有所帮助:
How Enable Right Click in IFRAME with JavaScript
或
http://forums.asp.net/p/1818670/5042726.aspx/1?Capture+mouse+right+click+event+inside+a+iframe+using+jquery+
恐怕这是不可能的。当你在 iframe 中时,你是 在第二个标签中......除非你拥有里面的东西 iframe 并能够将您的 Javascript 放在页面上 这是不可能的。对于许多安全性而言,iframe 非常有限 原因。
如果有人不这么认为,请告诉我,很高兴撤下这篇文章。
虽然试试这里提到的这个技巧:http://www.codingforums.com/archive/index.php/t-8824.html
或这里http://forums.mozillazine.org/viewtopic.php?f=19&t=371334
干杯,
【讨论】:
我只在那个 asp.net 论坛网站上发布了这个问题。我必须需要一个想法来解决这个问题。很抱歉投了反对票。 @Neon 哈哈哈哈哈哈 :) 很酷,所以你得到了正确的答案吗?我会删除我的帖子,但让我知道这是否可能,没有黑客:)
哦,你投了反对票,因为?
...感谢您的回复。我需要解决这个问题。如果您以后有任何想法,请回复此内容。
@Neon 我在上面粘贴了一个有用的链接尝试使用 context menu
forums.mozillazine.org/viewtopic.php?f=19&t=371334 anyhoo 不值得投反对票,
asp.net 不支持标签。你能建议任何其他方法吗?谢谢你的答复。在 asp.net 中是否有 iframe 的替代品? :)【参考方案2】:
如果iframe
内的页面可能在同一个域中。
同一域中的 IFrame 页面: http://fiddle.jshell.net/rathoreahsan/MNtw8/8/show/
查看演示: http://jsfiddle.net/rathoreahsan/gJtkW/
如果您像您一样访问iframe
内的其他域的页面,那么不建议这样做。
已编辑:请参阅下面给出的一些参考资料,希望对您有所帮助。
the-iframe-cross-domain-policy-problem
cross-domain-iframe-resizing
【讨论】:
正是我试图解释兄弟得到-1 :) ++1 无论如何都是你的,但是如果我可以请看上面的链接,javascript 注入在任何情况下都是不好的:)
@Ahsan.. 感谢您的回复.. 我尝试了您的演示网址并实现了它。当我运行该程序时,它显示一条错误消息“Microsoft JScript 运行时错误:权限被拒绝”。为什么这个错误发生在我身上?请帮我解决。 :)
通常情况下,如果父级尝试控制不同域中的 iframe,您会收到此错误。
@AhsanRathod 感谢您的回复.. 我会看到并给您反馈。我还有另一个问题。当通过 iframe 在 asp 页面中加载 SWF 文件时,我们可以禁用右键单击它吗?以上是关于使用 jquery 在 iframe 中捕获鼠标右键单击事件的主要内容,如果未能解决你的问题,请参考以下文章