0

我遇到了 LABjs 的问题。我加载了所有脚本,但是当我在 IE 中使用它时,它完全崩溃了。

 $LAB
     .script('https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js').wait()
     .script('https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js')

如果我添加一个条件语句

<!--[if IE ]>
     <script type="text/javascript" src="somescript.js"></script>
<![endif]-->

这将失败。我如何将它包含到 LABjs 中?

谢谢。

4

1 回答 1

1

我首先要强烈地说,你不应该再做 IE-only 脚本了。但是,如果您真的必须这样做,并且在您为这种不良做法多次拍打自己的手腕之后...

(function(){

   // From: http://james.padolsey.com/javascript/detect-ie-in-js-using-conditional-comments/
   var ie_version=(function(){var c,a=3,b=document.createElement('div'),d=b.getElementsByTagName('i');while(b.innerHTML='<!--[if gt IE '+(++a)+']><i></i><![endif]-->',d[0]);return a>4?a:c})();

   $LAB.setOptions({AlwaysPreserveOrder:true})
   .script('https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js')
   .script('https:///ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js')
   .script(ie_version ? 'somescript.js' : '')
})();

ie_version代码片段来自: http : //james.padolsey.com/javascript/detect-ie-in-js-using-conditional-comments/,它使用动态创建的 IE 条件注释来确定 IE 版本。

注意:根据您发布的内容,我假设“somescript.js”需要在 jquery 和 jquery-ui 脚本之后严格执行。如果不是这种情况,您可以根据需要将其放在$LAB链中的不同位置,并且您可以取出setOptions({AlwaysPreserveOrder:true})wait()仅在需要/必要时在链中使用。

于 2012-08-25T16:31:48.580 回答