Javascript 如何禁用右键单击IFRAME
我在MVC web应用程序的IFrame上显示了一个文档内容。内容不得复制和打印。我尝试使用Iframe的两个函数style=“pointer events:none;”oncontextmenu=“return false”禁用右键单击,这两个函数工作正常。 但在右键单击时,将显示带有“图幅源”、“视图源”的弹出窗口。我怎样才能限制这个。! 另外,如何限制打印屏幕选项。我知道还有其他实用程序,任何人都可以从中捕获数据。但是客户端希望限制打印屏幕选项Javascript 如何禁用右键单击IFRAME,javascript,jquery,html,iframe,model-view-controller,Javascript,Jquery,Html,Iframe,Model View Controller,我在MVC web应用程序的IFrame上显示了一个文档内容。内容不得复制和打印。我尝试使用Iframe的两个函数style=“pointer events:none;”oncontextmenu=“return false”禁用右键单击,这两个函数工作正常。 但在右键单击时,将显示带有“图幅源”、“视图源”的弹出窗口。我怎样才能限制这个。! 另外,如何限制打印屏幕选项。我知道还有其他实用程序,任何人都可以从中捕获数据。但是客户端希望限制打印屏幕选项 window.frames["your_if
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
函数clickIE(){
如果(全部文件){
返回false;
}
}
函数clickNS(e){
if(document.layers | |(document.getElementById&&!document.all)){
如果(e.which==2 | | e.which==3){
返回false;
}
}
}
if(document.layers){
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=clickNS;`在此处输入代码`
}
否则{
document.onmouseup=clickNS;
document.oncontextmenu=点击IE;
}
document.oncontextmenu=新函数(“返回false”)
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
谢谢你的帮助 要禁用右键单击菜单,可以使用以下代码段:
document.oncontextmenu = function() {
return false;
};
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
我制作了一个显示效果的对话框。您的问题有点让人困惑,因为标题是关于右键单击,而问题的bddy是关于复制和粘贴以及关于使用打印屏幕按钮。虽然你可以用右键点击按钮做一些事情(其他帖子已经回答了,并且有很好的文档记录),但通常你的问题是如何防止人们访问代码/内容或打印出你的内容
window.frames["your_iframe_id"].document.oncontextmenu = function(){ return false; };
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
这是不可能的。虽然你可以让一些用户变得更加棘手,但它永远不会成功对付那些有足够决心的用户
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
首先,即使您(以某种方式)禁用了键盘上的“打印屏幕”按钮,仍有许多屏幕捕获程序。。。我看不出,在网站代码的限制范围内,怎么可能(永远)检测到另一个程序在这样做
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
任何javascript解决方案都可能失败,他们可以关闭javascript
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
即使您设法阻止某人查看源代码和复制HTML,也可能有人直接从站点中删除内容
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
我有一个朋友是平面设计师,他想这样做(在这种情况下禁止人们复制图像)。我告诉他不要麻烦,如果他们想把你的内容放到公共领域,他们会的。水位线可能有帮助,但仅在某些情况下。就个人而言,我会放弃这项任务,接受它,专注于更有趣的任务。这对我来说很好:
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
我们不能在iframe上禁用右键单击。因为iframe内容是从另一个源加载的,所以我们的代码无法在其上工作。在这里,我找到了一个解决方案,这是我们唯一的选择
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
<html>
<head>
<title>Disable Context Menu</title>
<script type="text/jscript">
function disableContextMenu()
{
window.frames["fraDisabled"].document.oncontextmenu = function(){alert("No way!"); return false;};
// Or use this
// document.getElementById("fraDisabled").contentWindow.document.oncontextmenu = function(){alert("No way!"); return false;};;
}
</script>
</head>
<body bgcolor="#FFFFFF" onload="disableContextMenu();" oncontextmenu="return false">
<iframe id="fraDisabled" width="528" height="473" src="local_file.html"></iframe>
<div style="width:528px;height:473px;background-color:transparent;position:absolute;top:0px;">
</body>
</html>
禁用关联菜单
函数disableContextMenu()
{
window.frames[“fraDisabled”].document.oncontextmenu=function(){alert(“No way!”);返回false;};
//还是用这个
//document.getElementById(“fraDisabled”).contentWindow.document.oncontextmenu=function(){alert(“No way!”);返回false;};;
}
1.)使用jquery禁用iFrame中的右键单击
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
</script>
// Function to block the right click in the iFrame
<script type="text/jscript">
function injectJS(){
var frame = $('iframe');
var contents = frame.contents();
var body = contents.find('body').attr("oncontextmenu", "return false");
var body = contents.find('body').append('<div>New Div</div>');
}
</script>
以下是jQuery中的一个示例(注意:按下鼠标右键将触发三个事件:mousedown事件、contextmenu事件和mouseup事件)
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
如果您有任何问题,请在下面留下评论。如果用户可以看到,您不能阻止他复制内容。我的意思是,一点也不。哦,但我希望找到一个迂回的解决办法:-)。我们可以限制iframe内容的打印屏幕选项吗?我手机上有摄像头。如果你的意思是你想阻止他们拍电影,那么不,你不能。你所能做的就是让我的禁用文本选择、右键单击和从打印时的DOM中删除元素(仅IE)变得非常困难。防止截图的唯一方法是首先不向用户显示内容。所以完全放弃这个项目,不要截图!耶!;)如果我在开发工具中禁用JavaScript呢?那么您将能够再次获得右键单击菜单。我认为没有(我希望没有)任何方法可以禁用用户的浏览器功能。如何在iFrame中禁用?这对iFrame不起作用。请参阅下面我给出的答案。我尝试使用同一行代码,但不起作用。复制、打印选项现在不显示。但是“视图源”和“图幅源”以及“另存为”选项仍然可见。有没有办法限制这一点。。感谢客户请求此功能,这就是我提出此问题的原因。无论如何,谢谢大家花时间回答我,这个问题是一个“不是真正的问题”的候选人,应该结束,就这么简单。我还想补充一点,这些行为阻塞解决方案对用户来说更烦人,用户不会再想回来,而不是以任何方式防止复制。十几年前,互联网上充斥着蹩脚的脚本,每当你想与网页互动时,都会说“不要复制!!!”。最好的办法是告诉客户这件事做不到,部分地做会伤害他的观众。
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};