2014-10-27 307 views
1

我有一个文档内容显示在MVC Web应用程序的IFrame中。内容不应该被复制和打印。我试图禁用右键使用两个函数style =“pointer-events:none;” oncontextmenu =“返回false”iframe,它工作正常。 但是在右键单击时,会显示'View Frame Source','View Source'弹出窗口。我怎样才能限制这一点。 另外,如何限制打印屏幕选项。我知道还有其他的工具可以从任何人可以捕获数据的地方找到。但客户想要限制打印屏幕选项。如何禁用在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> 

请任何帮助表示赞赏.. !!

+6

如果用户看到它,则无法阻止用户复制。我的意思是,没有。 – 2014-10-27 07:49:52

+0

哦,但我希望有一个迂回的解决方案:-)。我们可以限制iframe内容的打印屏幕选项吗? – Lax 2014-10-27 07:51:39

+1

我的手机上有相机。大声笑 – 2014-10-27 07:53:01

回答

6

为了禁用您可以使用下面的代码片段右键菜单:

document.oncontextmenu = function() { 
    return false; 
}; 

我做了一个JSFiddle显示效果。

+0

如果我在开发工具中禁用JavaScript,该怎么办? – 2014-10-27 08:12:09

+0

然后你将能够再次获得右键菜单。我不认为有(并且我希望没有)禁用用户浏览器功能的任何方法。 – jollelj 2014-10-27 08:50:20

0
window.frames["your_iframe_id"].document.oncontextmenu = function(){ return false; }; 
+0

我尝试使用相同的代码行,但它不工作。复制,打印选项现在不显示。但是“查看源代码”和“查看框架源代码”,“另存为”选项仍然可见。有什么办法来限制这个..谢谢 – Lax 2014-10-27 08:18:14

+0

客户端已经要求这个功能,这就是为什么我提出这个问题。无论如何,谢谢大家花时间回复我的回复 – Lax 2014-10-27 08:50:59

1

你的问题是有点混乱,因为标题是对的点击,但问题的bddy大约是复制和粘贴以及有关使用打印屏幕按钮。虽然你可以用右键点击按钮来做一些事情(已经被其他文章回答了,并且有很好的文档记录),但是一般来说,你的问题是如何防止人们访问代码/内容或者打印出你的内容。

这是不可能的。虽然你可以使一些用户更棘手,但对于那些已经足够坚定的人来说,它永远不会成功。

首先,即使您(以某种方式)禁用了键盘上的打印屏幕按钮,但屏幕捕捉程序还是很多的......而且我无法看到它将如何(无法)检测到另一个程序是从网站代码的限制内完成的。

任何javascript解决方案都可能失败,它们可以关闭javascript。

即使您设法阻止某人查看源代码并复制HTML,但某些人可能会直接从网站上刮取内容。

我有一个朋友是平面设计师,他想这样做(禁止在这种情况下复制图像的人)。我告诉他不要打扰,如果他们想把你投入公有领域的内容拿来,他们会。水印可能会有帮助,但只有在某些情况下。就我个人而言,我会放弃这个任务并接受它,专注于更有趣的任务。

+1

恕我直言,这个问题是一个“不是真正的问题”的候选人,应该关闭,这样简单。我还要补充一点,这些行为阻止解决方案对用户来说更烦人,因为它不会受到诱惑回来,而不是以任何方式防止复制。十几年前,互联网上充满了蹩脚的脚本,会说“不要复制!!!”每当你想与网页互动时。要做的最好的事情是告诉客户不能完成,部分做到可能会伤害他的观众。 – 2014-10-27 08:44:39