2014-10-27 301 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