谷歌音乐搜索栏的提示功能php修正代码_php技巧
问题描述
在加载页面的时候, 将光标快速定位到搜索栏上, 待页面加载完成, 搜索栏进行初始化后会显示搜索提示. 此时输入的任何内容将成为搜索提示的一部分而不是搜索关键字. 截图如下:
导致原因
搜索栏的 JavaScript 初始化执行在 onload 的时候. 因为页面图片请求多, 完全加载需要 3 秒钟左右, 并且搜索栏的 tabindex 被设为 1, 搜索优先的用户很容易就能遇到.
以下是我根据自己的理解反编译出来的 JS 代码, 页面在 onload 的时候将会执行 m.hint.initHint 方法为搜索框添加提示功能.
/**
* 为搜索框添加提示功能
* @param searchTip 提示信息
* @param searchBoxId 搜索输入框 ID
* @param hideBoxId 关键字隐藏框 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);
}
// 在这里将搜索提示赋给临时变量
m.hint.Gh[searchBox] = searchTip;
// 如果搜索框存在, 则为搜索框加上临时变量和灰色字的 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 节点加载和 JavaScript 初始化之间的时间. 可以在搜索框加载完成后立刻执行 JS, 反正 Google 自己的产品也不需要 SEO. 当然, 最好在 DOM ready 的时候执行.
扩展知识
记得我写过一篇文章, 介绍如何在 WordPress 搜索框添加文字提示. 我的处理办法简单粗暴, 仅以框内关键字来判断是关键字还是提示信息. (所以我的提示信息很长)
在分析这个案例的过程中, 我发现 Google 的处理办法很好, 可以借鉴和使用. 它通过隐藏输入框来放置真正的搜索信息, 所以可以实现完全关键字和提示文案的区分.
后话
这个小问题已经困扰我很久了 (几乎每次遇到), 今天终于忍不住看了一下代码, 希望 Google 的工程师能够看到本文快速解决掉. (修改建议我都给出来了, 还不改也说不过去吧)

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本文詳細介紹了芝麻開門交易所(Gate.io)網頁版和Gate交易App的註冊流程。 無論是網頁註冊還是App註冊,都需要訪問官方網站或應用商店下載正版App,然後填寫用戶名、密碼、郵箱和手機號等信息,並完成郵箱或手機驗證。

詳細介紹芝麻開門交易所網頁版登入口操作,含登錄步驟、找回密碼流程,還針對登錄失敗、無法打開頁面、收不到驗證碼等常見問題提供解決方法,助你順利登錄平台。

為什麼Bybit交易所鏈接無法直接下載安裝? Bybit是一個加密貨幣交易所,為用戶提供交易服務。該交易所的移動應用程序不能直接通過AppStore或GooglePlay下載,原因如下:1.應用商店政策限制蘋果公司和谷歌公司對應用商店中允許的應用程序類型有嚴格的要求。加密貨幣交易所應用程序通常不符合這些要求,因為它們涉及金融服務,需要遵循特定的法規和安全標準。 2.法律法規合規在許多國家/地區,與加密貨幣交易相關的活動都受到監管或限制。為了遵守這些規定,Bybit應用程序只能通過官方網站或其他授權渠

本文推荐十大值得关注的加密货币交易平台,涵盖币安(Binance)、OKX、Gate.io、BitFlyer、KuCoin、Bybit、Coinbase Pro、Kraken、BYDFi和XBIT去中心化交易所。这些平台在交易币种数量、交易类型、安全性、合规性、特色功能等方面各有千秋,例如币安以其全球最大的交易量和丰富的功能著称,而BitFlyer则凭借其日本金融厅牌照和高安全性吸引亚洲用户。选择合适的平台需要根据自身交易经验、风险承受能力和投资偏好进行综合考量。 希望本文能帮助您找到最适合自

訪問幣安官方網站最新版登錄入口,只需遵循這些簡單步驟。前往官方網址,點擊右上角的“登錄”按鈕。選擇您現有的登錄方式,如果是新用戶,請“註冊”。輸入您的註冊手機號或郵箱和密碼,並完成身份驗證(例如手機驗證碼或谷歌身份驗證器)。成功驗證後,即可訪問幣安官方網站的最新版登錄入口。

本指南提供了 Bitget 交易所官方 App 的詳細下載和安裝步驟,適用於安卓和 iOS 系統。指南整合了來自多個權威來源的信息,包括官網、App Store 和 Google Play,並強調了下載和賬戶管理過程中的注意事項。用戶可以從官方渠道下載 App,包括應用商店、官網 APK 下載和官網跳轉,並完成註冊、身份驗證和安全設置。此外,指南還涵蓋了常見問題和注意事項,例如

本指南提供了 Bitget 交易所官方 App 的詳細下載和安裝步驟,適用於安卓和 iOS 系統。指南整合了來自多個權威來源的信息,包括官網、App Store 和 Google Play,並強調了下載和賬戶管理過程中的注意事項。用戶可以從官方渠道下載 App,包括應用商店、官網 APK 下載和官網跳轉,並完成註冊、身份驗證和安全設置。此外,指南還涵蓋了常見問題和注意事項,例如
