我電腦的 IE7 不知從何時開始變的無法新增「搜尋提供者(Search Provider)」(如下圖示),導致我就只能使用內建的 Live Search 搜尋而已。
當我點進去之後點擊 "Google" 後,竟然出現「元素找不到」的錯誤訊息:
再進一步探究之後,發現原來我的 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?}"
相關連結