Javascript 使用jquery捕获iframe中的鼠标右键单击事件
我需要使用任何javascript或jquery代码在asp.net的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
<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文件吗第页。