是否有可能有不同的javascript代码为每个浏览器

Is it possible to have different javascript codes for each browsers?

本文关键字:代码 浏览器 javascript 可能有 是否      更新时间:2023-09-26

我从过去的帖子中找到了一个代码,它是这样的:

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

有没有办法让它像有一个单独的。js文件的safari和另一个为mozilla?谢谢你的帮助

是。您可以通过编程检查用户使用的浏览器,然后在头部添加一个脚本标记。

例如

 if (navigator.userAgent.indexOf("Firefox") != -1) {
   var head = document.getElementsByTagName('head')[0];
   var script = document.createElement('script');
   script.type = 'text/javascript';
   script.src = 'firefoxScript.js';
   head.appendChild(script);
}
然而,这通常是一个坏主意。你不应该根据浏览器改变你的行为,因为如果浏览器改变了,它会使你的代码很难维护。最好使用特征检测。Modernizr是一个很好的框架。

或者,使用一个已经为你解决了大部分浏览器兼容性问题的框架,比如jQuery。

如果你不能使用javascript库,如jQuery, MooTools, Dojo等,你应该,而不是嗅探用户代理(浏览器),只检测它的功能,否则你将以IE6, IE7, IE8的JS文件结束,因为它们都有不同的功能。

更多信息请访问http://www.quirksmode.org/js/support.html和http://www.modernizr.com/

作为免责声明,这是一个糟糕的想法,但这里。你可以在jQuery中做以下操作,这里假设你在使用jQuery,如果你在使用,你就不需要这个了但是无论如何

if ($.broswer.msie) $.getScript('js/ie.js')
else if ($.broswer.mozilla) $.getScript('js/firefox.js')
else if ($.broswer.opera) $.getScript('js/opera.js')
else if ($.broswer.webkit) $.getScript('js/chrome.js')

通常认为使用"特征检测"而不是"浏览器检测"是一个更好的策略,并且让代码根据单个特征是否存在来调整技术。

随着时间的推移,随着浏览器的进化,修复错误,添加功能等,这个系统的可扩展性要大得多。因为它会根据给定的功能或行为是否存在而自动调整,而不是试图跟上所有浏览器的所有版本。

例如,在今天最新的浏览器版本中,除了IE9,几乎所有的东西都支持CSS3转换。但是很多老版本的浏览器都不支持它们,总有一天未来的IE版本会支持它们。

如果你使用功能检测来查看CSS3是否存在,如果存在就使用它,如果不存在就使用回退机制,那么你就不必跟踪这些版本。你检测这个特性是否存在。就是这么简单。当IE的未来版本支持CSS3转换时,你不需要更新你的代码来利用它——它会自动完成。当有人出现在你的网站上,使用的浏览器你没有特别编码,你的特征检测可能仍然有效,即使你从来没有为该浏览器编码。

我认为我们不需要再这样做了,因为现代Javascript框架照顾跨浏览器兼容性的使用。最好使用jQuery或类似的东西,而不是重新发明轮子…

这些应该会有所帮助:http://www.quirksmode.org/js/detect.htmlhttp://www.javascriptkit.com/javatutors/navigator.shtml

正如在另一个答案中所说,最好使用一个框架来抽象浏览器差异。在现代网页设计中,你不应该测试用户代理的功能支持,而应该使用像modenizer这样的库。这将为您提供关于是否存在某些特性的全局变量

这些是IE条件注释,它们只适用于IE浏览器。虽然它们可以方便地为这个历史上错误和缺乏功能的浏览器提供备用方案,但这并不是提供跨浏览器支持的最佳方式。

相反,你应该使用功能检测来找出每个浏览器缺少什么,然后加载替代脚本或禁用额外的功能。

查看Modernizr,它对几乎每一个新特性都有自动测试,并允许你在Javascript和CSS中使用测试结果。