現(xiàn)代Web開發(fā)人員可能錯過一個強(qiáng)大的工具來提高可用性,而無需在計劃或構(gòu)建自己的網(wǎng)站時考慮Ajax。
在本文中,我們將討論如何解決成都江北
網(wǎng)站建設(shè)的五個最常見的挑戰(zhàn)。使用Ajax來增強(qiáng)網(wǎng)站上的內(nèi)容,盡管關(guān)于所有五個主題都有很多討論和研究,但是這個職位應(yīng)該給初學(xué)者和中級Ajax開發(fā)人員一些可靠的技能,以便以更方便和易于理解的方式實現(xiàn)Ajax函數(shù)。
問題1:內(nèi)容不是向后兼容當(dāng)出現(xiàn)此問題時,設(shè)計人員已經(jīng)將JavaScript和Ajax增強(qiáng)到他們的網(wǎng)站架構(gòu),而不指定禁用JavaScript的瀏覽器。
JavaScript和Ajax網(wǎng)站有哪些錯誤JavaScript應(yīng)該被視為規(guī)劃過程的一部分,但是您應(yīng)該確保站點(diǎn)是向后兼容的。
解決方案:將Ajax實現(xiàn)為已經(jīng)運(yùn)行的網(wǎng)站的增強(qiáng)
盡管Ajax可能計劃網(wǎng)站的總體架構(gòu),以確保所有工作都可以通過常規(guī)的服務(wù)器端方法來完成。
假設(shè)您有一個員工信息頁面,每個員工有一個單獨(dú)的鏈接。使用服務(wù)器端技術(shù),您可以基于查詢字符串的值顯示特定員工的內(nèi)容,以便:
上面所有的鏈接指向雇員頁面上的同一頁面,并根據(jù)變量查詢字符串。每個雇員的信息將以多種方式從服務(wù)器加載:通過服務(wù)器端;通過數(shù)據(jù)庫;甚至使用XML。
是否單擊了雇員鏈接,則頁面通過所請求的信息加載。
因此,在任何Ajax增強(qiáng)層之上的內(nèi)容都是完全可以接受的。然后,使用JavaScript,全頁刷新可以中斷和內(nèi)容,而不是通過AJAX加載。單擊鏈接可以通過ID或檢查錨href屬性的值來確定。
盡管內(nèi)容可以完全禁用javascript,但是大多數(shù)用戶會看到增強(qiáng)的AJAX驅(qū)動程序版本。
Ajax漸進(jìn)增強(qiáng)的原理是眾所周知的,因為它是常用的JavaScript技術(shù)和固有的CSS,如下圖所示:
因此,在沒有JavaScript的情況下構(gòu)建網(wǎng)站,然后添加JavaScript作為增強(qiáng),就像添加HTML內(nèi)容然后使用CSS增強(qiáng)一樣。
問題2:瀏覽器加載指示器不通過Ajax請求觸發(fā)幾乎所有瀏覽器都直觀地顯示要加載的用戶內(nèi)容。在當(dāng)前瀏覽器中,指示標(biāo)簽中顯示的加載內(nèi)容。
下面的圖片顯示了來自幾個流行瀏覽器的動畫指示器。
問題是Ajax請求不觸發(fā)這個負(fù)載度量,即內(nèi)置瀏覽器。
解決方案:在內(nèi)容、負(fù)載上插入類似的負(fù)載指數(shù)
這種常見的解決方案是將自定義進(jìn)度指示符作為Ajax請求。許多網(wǎng)站提供免費(fèi)加載的圖形。
為站點(diǎn)的Ajax功能實現(xiàn)自定義加載圖形或漸進(jìn)指示器,只需在適當(dāng)?shù)臅r候通過JavaScript顯示和隱藏它。
Ajax代碼將包括幾行代碼,這些代碼告訴您請求是否正在進(jìn)行或已經(jīng)完成。
問題3:用戶不知道Ajax請求已經(jīng)完成這常常被忽略,因為開發(fā)人員可能認(rèn)為缺少的負(fù)載度量可以通知用戶內(nèi)容已經(jīng)完全加載。但是在大多數(shù)情況下,它所顯示的內(nèi)容已經(jīng)更新或刷新得更好。
解決方案:用唯一請求完成的消息
這可以通過提交這樣的表單來確認(rèn)。在已經(jīng)提交給Digger的鏈接頁上,請非常清楚地告知您已經(jīng)收到了您的提交:
Digg形式提交指示符
雖然這個指示符沒有指示Ajax請求的完成,但原理是相同的:在成功對話框出現(xiàn)后,加載提交表單的頁面,這與框不同。
在Ajax請求中可以使用類似的圖表或度量來告訴用戶內(nèi)容已經(jīng)更新。這是除了實現(xiàn)之外,而不是以前的問題,建議的進(jìn)度指示符。
一種類似但微妙的方式來顯示一個區(qū)域的內(nèi)容已經(jīng)更新為黃色衰落技術(shù)。這種方法對于用戶來說很熟悉,而工程和Ajax則加載內(nèi)容。
問題4:Ajax請求無法訪問第三方網(wǎng)站上的服務(wù)這個對象對象位于所有Ajax請求的根部,它限制了頁面在同一域中的請求。但有時您希望通過Ajax請求訪問第三方數(shù)據(jù)。許多Web服務(wù)允許它們的數(shù)據(jù)通過API。
解決方案:使用服務(wù)器作為代理
這個問題的解決方法是在服務(wù)器和瀏覽器之間使用第三方服務(wù)代理。雖然方案的細(xì)節(jié)遠(yuǎn)遠(yuǎn)超出了本文的范圍,但我們將遵循的基本原則仍在起作用。
因為Ajax請求來自客戶端的瀏覽器,所以它必須在另一個位置引用文件,但是與請求源在同一域中。
與客戶端的瀏覽器不同,服務(wù)器并不受這種限制。因此,當(dāng)調(diào)用服務(wù)器上的頁面時,它在后臺運(yùn)行,因為它通常同時訪問任何域。
因為第三方服務(wù)請求在您的服務(wù)器上,所以用戶沒有安全風(fēng)險。因此,一旦在服務(wù)器級別獲得信息,Ajax調(diào)用的下一步就是將響應(yīng)返回給客戶端,客戶端將包括從第三方Web服務(wù)獲得的數(shù)據(jù)。
問題5:深層鏈接不可用這是一個棘手的問題,但它不能取決于您需要的站點(diǎn)或應(yīng)用程序的類型。當(dāng)出現(xiàn)問題時,內(nèi)容通過AJAX加載,因此國家的網(wǎng)站不受未指向的頁面URL更改的影響。
如果用戶通過與朋友共享的書簽或鏈接返回頁面,則不會自動顯示更新的內(nèi)容。網(wǎng)站將恢復(fù)到原來的狀態(tài)。Flash也有同樣的問題:不允許用戶鏈接到任何初始屏幕。
解決方案:使用錨定內(nèi)部頁面
確保使用AJAX驅(qū)動的頁面鏈接和特定國家的書簽來修改URL,而不刷新頁面或影響其垂直位置。
案例部分:
以上是一個功能塊代碼,但是一個理論例子來證明所涉及的主要步驟
代碼的前兩行從當(dāng)前頁面位置(URL)獲取變量,然后將位置轉(zhuǎn)換為字符串,我們可以對其進(jìn)行操作。
接下來,通過錨定(#),然后查看數(shù)組,從分割中創(chuàng)建多于一個的項。大于一個意味著URL的錨。
如果URL只是其中的一部分,則意味著沒有錨。后續(xù)的切換聲明包含基于錨值的內(nèi)容。在切換語句中有一個默認(rèn)選項。如果不存在錨,它將在原來的狀態(tài)下加載同一頁。
此外,我們將編寫代碼來處理鏈接,通過內(nèi)部錨直接指向特定內(nèi)容。指向?qū)⒓虞d到內(nèi)容上的內(nèi)容的鏈接,字符串#內(nèi)容將附加到當(dāng)前頁面的URL。
這將添加一個內(nèi)部錨來更改URL,保持頁面視圖不變,但保留一個標(biāo)識符來表示頁面的所需狀態(tài)。
這個解釋只是一個理論。工作的概念,它工作得很好。但我沒有說這樣的網(wǎng)站或網(wǎng)站建設(shè)的所有可能性,缺點(diǎn)和其他微妙之處。
成都江北網(wǎng)站建設(shè)遵循更全面的討論,下面的鏈接,或者自己嘗試一下。另外,請注意,這可以用于在不使用Ajax的情況下更改要與JavaScript分開測試的內(nèi)容。
本文題目:成都江北網(wǎng)站建設(shè):如何在web設(shè)計中解決ajax問題
當(dāng)前地址:http://jinyejixie.com/news14/226164.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、云服務(wù)器、建站公司、網(wǎng)站維護(hù)、網(wǎng)站策劃、微信小程序
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)