2011-08-17 40 views

回答

17

而不是禁用查找功能,你可以讓這個發現會找不到合適的字眼!一種方法是使用CSS content聲明來注入單詞。找不到它們:

<div class="word-foobar"></div> 

.word-foobar:before { 
    content: "Foobar"; 
} 

你可以很容易地寫一些Javascript來爲你自動生成所有必要的CSS規則。

1

編號替換圖像是最快和最安全的方法。 (除非你願意切換到Flash/Java Applet /等)

+0

它可以覆蓋默認瀏覽器快捷方式,並且有一些超過有效期的時間做到這一點。 ..只要拿JSfiddle或Google文檔爲例 – Blowsie 2011-08-17 13:10:36

+0

@Blowsie:這正是我提到「最安全」這個詞的原因。如果您在網絡遊戲中以某種方式阻止密鑰 - 通過在地址欄中寫入「javascript:unblockingCode ...」,仍然可以輕鬆地解除密鑰鎖定。 – bezmax 2011-08-17 14:04:25

4

我不認爲有一種方法可以完全禁用該功能,並且應該不是一種禁用它的方法。

但是可以確保一些文字不會被按Ctrl +˚F借它拿走的瀏覽器不考慮連續文本中找到。

使用圖像是一種相對簡單的方法。

或者,你可以隨機化字母,並用一些CSS魔法重新排列它們(不幸的是,我的CSS-fu太弱,不能舉一個例子)。例如,如果您想「隱藏」單詞「hello」,那麼在單獨的<div>中用每個字母寫出「lehol」,並應用一些CSS樣式,以便在視覺上按照正確的順序排列字母。

請注意,此(也可能是所有其他工作解決方案)也將中斷複製和粘貼的文字。

+3

有可能覆蓋默認的瀏覽器快捷方式,並且還有一些比有效的時間還要快......只要以JSfiddle或谷歌文檔爲例 – Blowsie 2011-08-17 13:10:50

+0

我糾正了。不過,我認爲@nickf的答案可能是最好的答案。 – 2011-08-17 13:12:03

1

您可以用JavaScript做到這一點 - 這只是(用jQuery的)因爲我不能確定如何監聽既CTRL和F,但你的想法僞代碼:

$(body).keypress(function(e) 
{ 
    if (e.keyCode===17) 
    { 
     //ctrl has been pressed, listen for subsequent F press (keyCode 70) 
     //if next keyCode===70 
     return false; 
    } 
}); 

據我所知,像這樣返回false將會阻止瀏覽器在按下按鍵時執行任何操作。如果return false;還不夠,您還可以使用e.preventDefault();來防止發生任何事情。

希望這有助於

+0

附加閱讀: keycode測試頁面在這裏:http://asquare.net/javascript/tests/KeyCode.html 和一個jQuery控件插件,以幫助檢測按Ctrl鍵和http:// www。 gmarwaha.com/blog/2009/06/16/ctrl-key-combination-simple-jquery-plugin/ – jammypeach 2011-08-17 10:55:25

+0

請注意,即使這樣做,它也不會阻止用戶進入菜單並選擇「在頁面中查找」從那裏。或者如果他使用使用某種其他鍵組合搜索的區域設置,則可以使用其他快捷方式。 – 2011-08-17 10:57:40

7

您可以禁用大多數瀏覽器(IE9,火狐,Chrome,Opera)的鍵盤快捷鍵,但有人使用查找你不能阻止通過單擊它在瀏覽器中。

下面是一些jQuery的供電的JavaScript做的:從http://caniuse.com/,在此功能定期刺激我採取

$(window).keydown(function(e){ 
    if ((e.ctrlKey || e.metaKey) && e.keyCode === 70) { 
     e.preventDefault(); 
    } 
}); 

。在該網站上,它用於使CTRL + F在頁面上執行自定義搜索,而不是完全禁用它。

2

我認爲使用keydown可以實現這一點,但是作爲一個原則問題,改變瀏覽器行爲方式是一個壞主意。雖然這對你來說更加痛苦,但還是有字體替換技術可以使它更容易。

如果你確實找到了這樣做的方法,總會有人會繞過它的危險。編寫頁面可以比瀏覽器更好地工作。

55

代碼

window.addEventListener("keydown",function (e) { 
    if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) { 
     e.preventDefault(); 
    } 
}) 
0

爲什麼不使用Shadow DOM?這將使您的內容無法被搜索引擎或屏幕閱讀器訪問。並且爲用戶提供完全相同的行爲。

看看這裏獲取更多信息:Introduction to Shadow DOM

相關問題