欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

谷歌音樂(lè)搜索欄的提示功能php修正代碼

 更新時(shí)間:2011年05月09日 23:17:36   作者:  
我很喜歡在 google.cn/music 上找 mp3, 因?yàn)楣雀枰魳?lè)在版權(quán)方面, 用戶體驗(yàn)和搜索功能都做得很好. 但是它的搜索欄提示功能一直存在一個(gè)小問(wèn)題, bug 存在半年以上了吧

問(wèn)題描述

在加載頁(yè)面的時(shí)候, 將光標(biāo)快速定位到搜索欄上, 待頁(yè)面加載完成, 搜索欄進(jìn)行初始化后會(huì)顯示搜索提示. 此時(shí)輸入的任何內(nèi)容將成為搜索提示的一部分而不是搜索關(guān)鍵字. 截圖如下:

谷歌音樂(lè)搜索欄的 bug

導(dǎo)致原因

搜索欄的 JavaScript 初始化執(zhí)行在 onload 的時(shí)候. 因?yàn)轫?yè)面圖片請(qǐng)求多, 完全加載需要 3 秒鐘左右, 并且搜索欄的 tabindex 被設(shè)為 1, 搜索優(yōu)先的用戶很容易就能遇到.

以下是我根據(jù)自己的理解反編譯出來(lái)的 JS 代碼, 頁(yè)面在 onload 的時(shí)候?qū)?huì)執(zhí)行 m.hint.initHint 方法為搜索框添加提示功能.

復(fù)制代碼 代碼如下:

/**
* 為搜索框添加提示功能
* @param searchTip 提示信息
* @param searchBoxId 搜索輸入框 ID
* @param hideBoxId 關(guān)鍵字隱藏框 ID
*/
m.hint.initHint = function(searchTip, searchBoxId, hideBoxId){
var searchBox = document.getElementById(searchBoxId);
var hideBox = null;
if(searchBox){
if(hideBoxId) {
hideBox = document.getElementById(hideBoxId);
}
l.events.listen(searchBox, "blur", l.bind(m.hint.onInputBlur, null, searchBox, hideBox), false);
l.events.listen(searchBox, "focus", l.bind(m.hint.onInputFocus, null, searchBox, hideBox), false);
if(hideBox){
l.events.listen(searchBox, "change", bind(m.hint.onInputChange, null, searchBox, hideBox), false);
hideBox.value = m.hint.getInputValue(searchBox);
}

// 在這里將搜索提示賦給臨時(shí)變量
m.hint.Gh[searchBox] = searchTip;
// 如果搜索框存在, 則為搜索框加上臨時(shí)變量和灰色字的 class
m.hint.onInputBlur(searchBox);
}
};

m.hint.onInputBlur = function(searchBox, hideBox) {
m.hint.fi(searchBox);
hideBox && m.hint.onInputChange(searchBox, hideBox);
};

m.hint.fi = function(searchBox) {
if(searchBox) {
var searchTip = m.hint.Gh[searchBox];
if(searchTip && (searchBox.value.trim()=="" || searchBox.value==searchTip)) {
searchBox.setAttribute(m.hint.IS_HINT, "1");
searchBox.className += " hint";
searchBox.value = searchTip;
}
}
};

解決辦法
縮短搜索框 DOM 節(jié)點(diǎn)加載和 JavaScript 初始化之間的時(shí)間. 可以在搜索框加載完成后立刻執(zhí)行 JS, 反正 Google 自己的產(chǎn)品也不需要 SEO. 當(dāng)然, 最好在 DOM ready 的時(shí)候執(zhí)行.

擴(kuò)展知識(shí)
記得我寫過(guò)一篇文章, 介紹如何在 WordPress 搜索框添加文字提示. 我的處理辦法簡(jiǎn)單粗暴, 僅以框內(nèi)關(guān)鍵字來(lái)判斷是關(guān)鍵字還是提示信息. (所以我的提示信息很長(zhǎng))

在分析這個(gè)案例的過(guò)程中, 我發(fā)現(xiàn) Google 的處理辦法很好, 可以借鑒和使用. 它通過(guò)隱藏輸入框來(lái)放置真正的搜索信息, 所以可以實(shí)現(xiàn)完全關(guān)鍵字和提示文案的區(qū)分.

后話
這個(gè)小問(wèn)題已經(jīng)困擾我很久了 (幾乎每次遇到), 今天終于忍不住看了一下代碼, 希望 Google 的工程師能夠看到本文快速解決掉. (修改建議我都給出來(lái)了, 還不改也說(shuō)不過(guò)去吧)

相關(guān)文章

  • php 數(shù)組字符串搜索array_search技巧

    php 數(shù)組字符串搜索array_search技巧

    本文給大家總結(jié)了一下PHP實(shí)現(xiàn)數(shù)組字符串搜索的幾種使用技巧,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下
    2016-07-07
  • PHP使用ob_start生成html頁(yè)面的方法

    PHP使用ob_start生成html頁(yè)面的方法

    這篇文章主要介紹了PHP使用ob_start生成html頁(yè)面的方法,對(duì)ob_start的用法做了較為詳細(xì)的分析,并以實(shí)例總結(jié)了ob_start生成html頁(yè)面的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-11-11
  • php垃圾代碼優(yōu)化操作代碼

    php垃圾代碼優(yōu)化操作代碼

    php 代碼優(yōu)化提高M(jìn)ySQl的運(yùn)行效率。遇到同類問(wèn)題的朋友可以參考下。
    2010-08-08
  • 11個(gè)PHP 分頁(yè)腳本推薦

    11個(gè)PHP 分頁(yè)腳本推薦

    Web開(kāi)發(fā)中,分頁(yè)設(shè)計(jì)必不可少。本文列舉了10個(gè)PHP分頁(yè)腳本,希望對(duì)你的web開(kāi)發(fā)會(huì)有幫助。 列表中大部分,提供演示和代碼下載。
    2011-08-08
  • php設(shè)計(jì)模式 Bridge (橋接模式)

    php設(shè)計(jì)模式 Bridge (橋接模式)

    將抽象部份與它實(shí)現(xiàn)部分分離,使用它們都可以有獨(dú)立的變化
    2011-06-06
  • 最新評(píng)論