我在MVC Web应用程序的IFrame上显示了文档内容。不得复制和打印内容。我尝试使用两个函数style =" pointer-events:none;"禁用右键单击。 oncontextmenu ="返回false"对于Iframe来说,这是正常的。 但是在右键单击时,弹出“查看框架源”,“查看源代码”'正在展示。我怎么能限制这个。 另外,如何限制打印屏幕选项。我知道还有其他任何人可以捕获数据的工具。但是客户想要限制打印屏幕选项。
<script lang=JavaScript>
function clickIE() {
if (document.all) {
return false;
}
}
function clickNS(e) {
if (document.layers || (document.getElementById && !document.all)) {
if (e.which == 2 || e.which == 3) {
return false;
}
}
}
if (document.layers) {
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown = clickNS;`enter code here`
}
else {
document.onmouseup = clickNS;
document.oncontextmenu = clickIE;
}
document.oncontextmenu = new Function("return false")
<body oncontextmenu="return false" onkeydown="if ((arguments[0] || window.event).ctrlKey) return false" >
<div id="div1" style="background-color:Red; height:120px">
<iframe id="id1" src="" name="I1" scrolling="no" height="100%" width="100%" marginwidth ="0" marginheight="0" onload="disableContextMenu();" style="pointer-events:none;" />
</div>
请任何帮助赞赏.. !!
答案 0 :(得分:6)
答案 1 :(得分:1)
你的问题有点令人困惑,因为标题是右键点击,但问题的bddy是关于复制和粘贴以及使用打印屏幕按钮。虽然您可以使用右键单击按钮(已经通过其他帖子回答并且有详细记录)来执行某些操作,但通常您的问题是如何阻止人们访问代码/内容或打印出您的内容。
这是不可能的。虽然你可以让某些用户更加棘手,但对于那些有足够决心的人来说,它永远不会成功。
首先,即使您(某种程度上)禁用了键盘上的打印屏幕按钮,也有很多屏幕捕获程序......我无法看到它是如何(可能)检测到的另一个程序是在网站代码的限制范围内完成的。
任何javascript解决方案都可能失败,他们可以关闭javascript。
即使您设法阻止某人查看源代码并复制HTML,但有些人可能直接从网站上抓取内容。
我有一位朋友,他是一名平面设计师,他想这样做(在这种情况下禁用复制图像的人)。我告诉他不要打扰,如果他们想把你放入公共领域的内容拿走,他们会的。水印可能有所帮助,但仅限于某些情况。就个人而言,我放弃了这项任务,接受它,专注于更有趣的任务。
答案 2 :(得分:0)
window.frames["your_iframe_id"].document.oncontextmenu = function(){ return false; };
答案 3 :(得分:0)
答案 4 :(得分:0)
这对我来说很好:
window.frames["your_iframe_id"].contentDocument.oncontextmenu = function(){
return false;
};
答案 5 :(得分:0)
1。)使用jquery在 iFrame 中禁用右键单击
<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>
在iFrame中调用“ injectJS()”函数
<iframe id="myiframe" width="528" height="473" onload="injectJS()"></iframe>
2。)在网页
中禁用右键单击仅使用javascript
document.addEventListener('contextmenu', event => event.preventDefault());
这是jQuery中的一个示例(注意:按下鼠标右键将触发三个事件:mousedown事件,contextmenu事件和mouseup事件)
// With jQuery
$(document).on({
"contextmenu": function(e) {
console.log("ctx menu button:", e.which);
// Stop the context menu
e.preventDefault();
},
"mousedown": function(e) {
console.log("normal mouse down:", e.which);
},
"mouseup": function(e) {
console.log("normal mouse up:", e.which);
}
});
如果您有任何问题,请在下面留下评论。