簡體   English   中英

使用yuicompressor進行條件補償

[英]Conditional compiliation with yuicompressor

我有以下javascript代碼段來檢測瀏覽器是否為IE 6-11:

var isIE = /*@cc_on!@*/false || !!document.documentMode;

我從這里的一個很好的答案中復制了這一點 但是,當我使用yuicompressor縮小腳本時,它會因以下錯誤而中斷:

[ERROR] in utils.js
  349:33:missing ; before statement
[ERROR] in utils.js
  1:0:Compilation produced 1 syntax errors.
org.mozilla.javascript.EvaluatorException: Compilation produced 1 syntax errors.
    at com.yahoo.platform.yui.compressor.YUICompressor$1.runtimeError(YUICompressor.java:172)
    at org.mozilla.javascript.Parser.parse(Parser.java:396)
    at org.mozilla.javascript.Parser.parse(Parser.java:340)
    at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:315)
    at com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:536)
    at com.yahoo.platform.yui.compressor.YUICompressor.main(YUICompressor.java:147)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.yahoo.platform.yui.compressor.Bootstrap.main(Bootstrap.java:21)

閱讀了yuicompressor ,發現它可以保留javascript塊注釋,例如: /*! comment */ /*! comment */ ,但是將代碼段更改為以下內容並不能解決該問題:

var isIE = /*!@cc_on!@*/false || !!document.documentMode;

錯誤消息仍然相同。 而且我還想知道這是否會破壞條件編譯? 條件編譯的所有示例都/*@這樣的方式打開注釋,並以如下方式將其關閉: @*/ ,這使我認為條件編譯僅適用於注釋符號的這種組合。

有人知道我該如何工作嗎? 保持相同功能並正確通過yuicompressor的其他解決方案也可以作為答案。

檢測IE的另一種方法是對IE <= 9使用全局變量。這將通過yuicompressor驗證:

<html>
<body>
<!--[if IE]><script>isIE9OrLess = true;</script><![endif]-->
<script>
var isIE9OrLess = (typeof isIE9OrLess !== 'undefined');
document.write('are we in ie <= 9? ' + (isIE9OrLess ? 'yes' : 'no') + '<br>');
// detect ie > 9 using document.documentMode
var isIE = isIE9OrLess || !!document.documentMode;
document.write('are we in ie at all? ' + (isIE ? 'yes' : 'no'));
</script>
</body>
</html>

它不是理想的,因為它僅繞過問題而沒有實際解決。

暫無
暫無

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

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