簡體   English   中英

IE6表現的IE6性能

[英]IE6 performance with CSS expressions

我們正在開發一個將被出售給許多客戶的Web應用程序。 已經有一個客戶(銀行)決定一旦准備好就會購買該產品。 不幸的是,由於一些錯誤傳達,它出現的時間相當晚,他們使用的唯一瀏覽器是IE6。 該應用程序已經開始考慮到它不需要支持IE7以下的任何其他內容。 結果也很不錯 - 它在IE7 / FF / Opera / Safari上完全可用。 尚未在Chrome上進行測試,但預計會遇到一些問題。 不幸的是,現在IE6的要求畢竟......

該應用程序尚未開發得太遠,設計非常好,所以變化並不是那么可怕。 不過,它還需要一些工作。

IE6的一個好處是它支持兩個非標准且非常有用的功能。 首先是條件注釋,它允許我只為IE6包含一些CSS / JS文件。 其次是CSS表達式。 就是這樣的事情:

input
{
    background-color: expression(this.type='text'?'silver':'');
}

實質上,它將CSS值綁定到JavaScript表達式。 這樣可以輕松模擬IE6本身不支持的許多CSS功能,並且可以大大減輕我的負擔。

不幸的是IE因其JavaScript性能而臭名昭着。 我擔心使用太多這些表達式可能會減慢它的速度。 我也不知道銀行正在使用什么電腦。 由於它是一個非常大的,我希望他們所有的分支機構都有各種各樣的。 我不希望在那里使用任何東西 - 一些簡單的數學運算,三元運算符和查看此元素的/父元素的屬性。 在IE6_override.CSS文件中仍然會有幾十個。

這可能是個問題嗎?

補充: Blah,這是我害怕的。 好的,會看到我能用多少其他黑客來解決這些缺點。 Thanx,人!

表達式在許多頁面事件上被重新評估,當使用過於寬松時,這可能會降低整個頁面的性能。 (然而,他們無法回應可能導致他們需要重新評估的所有事件。)

MS承認表達式()是一個錯誤,並且正在從未來的瀏覽器刪除它

對於IE6的各種CSS缺點,通常有更好的個人JavaScript解決方法。

令人遺憾的是,許多公司仍然堅持使用可怕的IE6。 也許如果你遲交了項目,他們將在那時升級!

可以使IE表達式執行得最佳,不僅可以避免連續重新評估之類的事情,還可以將您想要的樣式掛鈎到特定於IE的類名,從而使您的IE特定CSS更易於維護(因為表達式本身是惡心的):

input
{
    1:expression(this.executedExpressions ? void 0 : this.className += (this.type == 'text' ? ' ie-text' : ''));
    2:expression(this.executedExpressions = true);
}

input.ie-text
{
    background-color:silver;
}

如果您要使用IE表達式,這是最好的方法。 (我真的應該寫一篇關於它的詳盡文章)。

不幸的是,CSS表達式的性能非常差,因為結果是在頁面加載時不斷計算的,而不僅僅是首次加載頁面時。 如果你必須使用表達式,那么最好使用帶有onLoad事件的標准JavaScript。

有關詳細信息,請參閱此文章: http//www.robertnyman.com/2007/11/13/stop-using-poor-performance-css-expressions-use-javascript-instead/

我建議您切換到任何支持CSS選擇器的JS Framework,這樣您就可以模擬CSS表達式的行為

如果在IE6上打開此URL,則可以測試JS Frameworks的性能

http://slicktest.perrohunter.com

干杯

是的,在IE期間,表達式確實很慢。 找到避免它們的方法。

我自己沒試過,但IE7-js看起來很有前途。 它聲稱使IE6與IE7兼容

編輯:順便說一下,要為IE6添加一些樣式,你也可以使用

<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" media="screen"  href="ie6styles.css" />
<![endif]-->

並且您始終可以使用jquery在包括IE6在內的所有瀏覽器中動態設置css屬性。

如果必須使用它們, 一次執行IE CSS表達式時發現的技術將有助於解決性能(但不是安全性)問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM