2014-09-23 64 views
2

我想覆蓋 CTRL + F爲了在HTML頁面上提供自定義搜索功能。這可以很容易地做到:覆蓋瀏覽器的搜索功能(CTRL + F),但重用其本機搜索字段

window.onkeydown = function(event) { 
    if (event.ctrlKey && event.keyCode == 70) { 
     event.preventDefault();   
     my_own_search(); 
    } } 

但後來我將不能夠(與Firefox,法語這裏的例子)使用瀏覽器的底部本地搜索字段

Description

如何做一個自定義搜索功能,重用瀏覽器的本地Bottam搜索文本框?

如果不可能,你有什麼建議創建在右上角(如Chrome的搜索欄)或底部(如在Firefox的搜索欄)上貼了自定義的文本框,以引導例如?


又如:PDF瀏覽器在Chrome提供了自定義搜索(=不是HTML頁面的常規搜索,但適合於PDF文檔的搜索),但瀏覽器的原生搜索字段:

enter image description here

+0

只有使用瀏覽器插件,即使如此也不是微不足道的。 – Kroltan 2014-09-23 14:56:44

+1

請爲downvote添加評論;)爲什麼這個問題不感興趣? – Basj 2014-09-23 18:55:47

+1

我會很認真考慮在覆蓋默認行爲之前爲用戶添加的好處。如果一個網站超過Ctrl + F,他們最好有一個驚人的發現體驗,超出瀏覽器默認的光年,或者我會立即離開該網站...只是說'。 – 2014-09-23 21:18:23

回答

-2

您無法從網頁中覆蓋瀏覽器的專有搜索功能。你也許可以創建一個瀏覽器插件來做到這一點...但這並不能真正幫助你。

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – Luca 2014-09-23 15:44:39

+1

這個問題對我來說很清楚。我完全理解。這只是你不能做的事情。 – rnevius 2014-09-23 15:48:12

+0

感謝您的回答,我不知道接受哪個答案,因爲他們是相似的......您是第一個嗎? ;)(看其他答案的評論) – Basj 2014-09-23 18:55:01

3

你永遠不能從一個網站覆蓋瀏覽器功能。如果可以的話,這是瀏覽器中的一個重大安全錯誤。

如前所述,可以爲各個瀏覽器編寫插件,但它們必須由用戶安裝(即它們允許您的覆蓋)。否則你運氣不好

3

我想因爲這是一箇舊的線程,但這裏標記的正確答案現在是無效的。過去兩天我在兩個網站上看到了這一點,我很喜歡它。 Codepen.io for one:

Command/Control + F在第一個窗格中時,您將看到他們的自定義搜索。

如果你審視自己的代碼,你可以看到他們有它自定義事件,做一個「搜索所有文件」在Chrome瀏覽器開發工具(CDT)爲CodeMirror搜索場

+2

謝謝@webdevinci。我的網站http://bigpicture.bi/demo現在使用CTRL + F進行自定義搜索功能。 – Basj 2016-02-14 14:21:41

+0

而且你是upvote允許讓我更接近幾個點能夠回覆不是我的帖子!所以謝謝你。我剛開始看到這個地方,喜歡它,並且對網站導航有很大的想法(不僅僅是查找文本,還有瀏覽網站等)。 – webdevinci 2016-02-15 17:01:48

+0

@Basj,回到這裏,你介意把這個看作是接受的答案嗎? – webdevinci 2017-07-09 13:27:50

1

要覆蓋搜索領域,你需要使用JavaScript鍵碼,使用這樣的陣列:

// 74=j, 75=k, 78=n, 84=t,27=esc, 17=ctrl 
var forbiddenCtrlKeys = new Array(74, 75, 78, 84, 123, 91, 92, 44, 165, 18, 122, 78, 27, 17, 16); 
// 37=left_arrow, 39=right_arrow 
var forbiddenAltKeys = new Array(37, 39, 27, 123, 91, 92, 44, 165, 18, 122, 78, 27, 17, 16); 
// 8=backspace, 116=F5 
var forbiddenSingleKeys = new Array(8, 116, 123, 91, 92, 44, 165, 18, 122, 78, 27, 17, 16); 
// per le textbox 116=F5 
var forbiddenTextBoxKeys = new Array(116, 27, 123, 91, 92, 44, 165, 18, 122, 78, 27, 17, 16); 

key = window.event.keyCode; // IE 

if (window.event.ctrlKey) { // CTRL 
    isCtrl = true; 
    isAlt = false 
} 

交換的鍵碼與您要禁用的。

可以找到關鍵代碼的完整列表here