2011-08-17 48 views
9

我們碰到的問題,最近因爲火狐4的發佈,則scrollPosition數據永遠不會被髮送到Firefox用戶。這是由browsercaps文件引起的,只是指定了Firefox 3.x的功能。解決這個問題的一個辦法是更新每臺服務器上的browsercaps文件,並隨時更新新版本的Firefox(或Chrome,或其他)。好了,之前我們甚至有機會來解決這個問題,我們已經在Firefox 6,它似乎只是我們不希望保持賽跑。什麼缺點設置Page.ClientTarget =「uplevel」的所有網頁?

事實證明,在母版頁設置Page.ClientTarget =「uplevel」(所以,一切,無條件)修復我們的具體火狐的scrollPosition問題。這對解決方案有什麼負面影響? Android瀏覽器的用戶會遭遇更糟糕的體驗嗎?他們現在是否會簡單地下載不必要的大頁面?有什麼理由我們不應該這樣做?

爲Page.ClientTarget的文檔是非常可怕的:

uplevel,指定相當於互聯網 瀏覽器6.0瀏覽器的功能。

..而似乎是錯誤的,或者至少誤導。它似乎是在IE6是功能最強大的瀏覽器時編寫的。 「uplevel」是否真的意味着「假設瀏覽器能夠處理所有事情」或「像對待IE6一樣對待它」?

+0

firefox當前版本爲6.0。檢查這個問題是否持續 – naveen

+0

是的,它仍然存在。除了將其版本號修改爲小於4之外,Firefox沒有任何辦法可以解決這個問題。browsercaps文件(我們從未觸及過的文件)僅將4之前的Firefox版本指定爲高級瀏覽器。 –

+0

爲古董MSDN鏈接+1。他們應該真的更新。 – naveen

回答

3

如果你想告訴WebForms有效地「裁員」,那麼設置Uplevel的工作方式,儘管你想在主頁面之前的Page_Init中完成。此時,WebForms會假設每個人都是比自己更新的瀏覽器。

1

對於服務器端的兼容性,不能測試瀏覽器的實際限制,我更喜歡使用一個黑名單,而不是白名單:如果瀏覽器不知道支持功能X那麼我想也支持它。

您也可以禁止特定瀏覽器的所有版本,例如沒有IE版本支持功能X)。這需要您一旦IE確實支持功能X就更新黑名單。

瀏覽器升級不應該破壞此方案。

+0

您使用什麼機制來實現您的黑名單? –

+0

在.NET中 - browsercaps – orip

+0

什麼是您爲黑名單中的特定瀏覽器明確禁用的功能示例?將這些功能啓用的結果是什麼? –

0

這不是一個答案,「什麼是缺陷」的問題,而是:

您可以將文件的browserCaps內的瀏覽器版本檢測使用正則表達式。

例如,2011年11月13日,Microsoft發佈了ASP.NET 4.0的更新,將IE10添加到上層列表(並修復了位於\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsersie.browser文件中的錯誤)。他們有一個正則表達式,只檢查一位數的主要版本,但在修補程序之後,任何IE版本> = 6都將被視爲高級版本。

變更前:

<capability name="majorversion" match="[6-9]" /> 

變更後:

<capability name="majorversion" match="[6-9]|[1-9]\d+" /> 

我猜你是不是遇到了此問題的任何更多,因爲2011年10月,至少爲26, firefox指令還使用正則表達式來檢測上級版本> = 3 :(來自firefox.browser文件)

<browser id="Firefox3" parentID="Firefox"> 
    <identification> 
     <capability name="majorversion" match="^[3-9]|[1-9]\d+" /> 
    </identification> 

    <capabilities> 
     <capability name="javascriptversion"    value="1.8" /> 
     <capability name="supportsMaintainScrollPositionOnPostback" value="true" /> 
    </capabilities> 
</browser> 

但是如果你仍然有probs,只需使用firefox.browser文件中的前瞻性正則表達式(沒有「單個數字主版本」bug)

相關問題