The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何手動新增 IE7 的搜尋提供者

我電腦的 IE7 不知從何時開始變的無法新增「搜尋提供者(Search Provider)」(如下圖示),導致我就只能使用內建的 Live Search 搜尋而已。

IE7 Search Provider

當我點進去之後點擊 "Google" 後,竟然出現「元素找不到」的錯誤訊息:

IE7 Add Search Provider

再進一步探究之後,發現原來我的 IE7 根本不支援 window.external.AddSearchProvider 方法(但以前是支援的),導致無法執行任何加入搜尋提供者的動作。

一個簡單的測試方法就是在瀏覽器的網址列輸入以下 JavaScript 程式執行,果然得到相同的錯誤訊息:

javascript:alert(window.external.AddSearchProvider);

這問題困擾我許久,逼的我自己去找註冊檔的設定位置,手動新增搜尋提供者到 IE7 中。剛查到機碼的位置如下:

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes

若要新增自己的搜尋提供者,必須在此機碼下新增一個以 GUID 為命名的機碼,至於 GUID 的取得可以到 Online GUID Generator 網站建立一筆,並將機碼名稱指定為 { + GUID + },例如:

{c017e7fa-0c2a-48a2-8dc2-159d92da2a11}

然後,在剛新增的機碼內再新增兩個「字串值」:

1. DisplayName

    這裡要設定顯示在 IE7 搜尋列選項的名稱

2. URL

    這裡要設定搜尋時的網址,並在搜尋關鍵字的地方代入 {searchTerms} 這個特殊變數。

例如你若要設定 Google Experiment Search 作為你的搜尋條件,你先進 Google 搜尋 TEST 關鍵字,並得到以下網址:

http://www.google.com/search?hl=zh-TW&esrch=BetaShortcuts&q=TEST&lr=

然後再將網址中的 TEST 字樣替換成 {searchTerms} 這個特殊變數,並設定到 URL 這個字串值中即可:

http://www.google.com/search?hl=zh-TW&esrch=BetaShortcuts&q={searchTerms}&lr=

最後,重新啟動 IE7 就可以看的到手動加入的搜尋提供者項目了。你也可以手動將剛剛新增的搜尋提供者設為預設值。

另外我將機碼匯出目前的結果如下,直接另存為 *.reg 檔 Double Click 也可以快速設定完成:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes]
"DefaultScope"="{382d0202-fa06-4a6f-b60d-1c2f16f5afca}"
"Version"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes\{382d0202-fa06-4a6f-b60d-1c2f16f5afca}]
"DisplayName"="Google"
"URL"="http://www.google.com/search?hl=zh-TW&esrch=BetaShortcuts&q={searchTerms}&lr="

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes\{49450FD3-A265-4946-9045-9C49276C4566}]
"DisplayName"="Live Search"
"URL"="http://search.live.com/results.aspx?q={searchTerms}&mkt=zh-tw&FORM=IEFM&src={referrer:source?}"

相關連結