Safari
Safari同樣根據(jù)腳本引擎持續(xù)執(zhí)行腳本的時(shí)間來判斷,當(dāng)我對Webkit的源代碼進(jìn)行反復(fù)研究后,發(fā)現(xiàn)默認(rèn)的超時(shí)時(shí)間是5秒,一旦達(dá)到這個(gè)上限,就會給出下面的對話框提示:
對話框提示:“在頁面url上的腳本讓Safari失去響應(yīng),你是要繼續(xù)運(yùn)行腳本還是終止腳本”。同樣的,對于用戶來說,也不是什么可怕的提示。在Safari中,可以關(guān)閉失控腳本的檢測功能。
Chrome
Chrome在跟蹤技術(shù)上有點(diǎn)狡猾,失控腳本檢測功能似乎和tab的事故控制(crash control)關(guān)聯(lián)到一起。我仔細(xì)看了源代碼,卻沒有找到具體的限制,但基本確定的是,這個(gè)限制是以時(shí)間為基礎(chǔ)的,估計(jì)在10秒左右(要么是5秒,要么 是10秒,總要和Safari或者Firefox看齊么)。我正在聯(lián)系Chrome項(xiàng)目組中的朋友,看看能不能得到確定的信息。盡管如此,如果網(wǎng)頁中存在 失控的腳本,用戶還是會看到下面的對話框:
毫無疑問,Chrome的提示比起其他瀏覽器來說,顯得都更加嚴(yán)重。點(diǎn)擊“Wait”按鈕,腳本會繼續(xù)運(yùn)行,直到達(dá)到下一個(gè)上限為止,也可以點(diǎn)擊“Kill pages”,直接關(guān)閉該頁面在內(nèi)存中的所有信息,并用一個(gè)空白頁取而代之。
Opera
Opera的情況比較有趣:他貌似沒有針對失控腳本的相應(yīng)限制。我運(yùn)行了幾個(gè)很長的測試,甚至花了幾分鐘,而在這個(gè)過程中,瀏覽器一直可以正常響應(yīng),這很出我的意料之外。我不是很確定,對于現(xiàn)在的情況來說,這個(gè)方法是好是壞,但至少它生效了,不是么?
一些建議
無論你的用戶使用什么瀏覽器,都不應(yīng)該在任何時(shí)候看到類似的提示。在你的網(wǎng)站或者Web應(yīng)用程序作為產(chǎn)品發(fā)布之前,做一些常規(guī)的性能測試是非常有必要的。在這方面有很多工具可以加以利用,比如Firebug’s profiler(只支持Firefox)、YUI Profiler (支持全部瀏覽器)或者Internet Explorer 8’s Profiler。 你應(yīng)該毫不猶豫地將那些執(zhí)行時(shí)間超過100毫秒的腳本找出來,哪怕這些腳本只是在某些瀏覽器上運(yùn)行不暢,這些腳本包含了一些需要執(zhí)行很長時(shí)間的代碼段,而 這些代碼應(yīng)該通過性能檢測工具進(jìn)行重新評估。確保你不是使用Chrome作為測試的底線,因?yàn)镃hrome在執(zhí)行JavaScript的速度上比其他瀏覽 器要高出一個(gè)數(shù)量級(和Firefox 3.1還有最新的WebKit Nightly相當(dāng))。最好使用Internet Explorer作為測試的底線,然后再測試其他瀏覽器,因?yàn)闊o論什么時(shí)候,IE的JavaScript引擎都是最慢的,當(dāng)在IE上修復(fù)問題以后,十有八 九在其他瀏覽器上也可以正常運(yùn)行了。
本文鏈接:http://www.95time.cn/tech/web/2009/6435.asp
出處:七月佑安
責(zé)任編輯:bluehearts
上一頁 瀏覽器根據(jù)什么來判定腳本失控? [1] 下一頁
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|