Dav*_*ins 30 javascript internet-explorer conditional-statements
我需要在Internet Explorer浏览器中触发特定脚本!
我试过这个:
<!--[if IE]>
<script></script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
不幸的是,这实际上阻止了脚本的加载.
编辑:对于每个人都在问我为什么需要这个:当使用一些动画时,IE使滚动非常跳跃.为了解决这个问题,我需要实现一个向IE提供平滑滚动的脚本.我不想将它应用到其他浏览器,因为它们不需要它和这个脚本虽然使滚动更平滑也使它有点不自然.
nde*_*ore 67
我很好奇为什么你特别需要针对IE浏览器,但如果真的是你需要做的话,下面的代码应该可以工作:
<script type="text/javascript">
if(/MSIE \d|Trident.*rv:/.test(navigator.userAgent))
document.write('<script src="somescript.js"><\/script>');
</script>
Run Code Online (Sandbox Code Playgroud)
Regex(MSIE \d)的前半部分用于检测Internet Explorer 10及更低版本.下半部分用于检测IE11(Trident.*rv:).
如果浏览器的用户代理字符串与该模式匹配,则它将附加somescript.js到页面.
vsy*_*ync 16
currentScript在除IE之外的所有浏览器中 [支持][1]
<script>
// self-invoked wrapper for scoping the `document` variable
!function( d ) {
if( !d.currentScript ){
var s = d.createElement('script')
s.src = 'ie.js'
d.head.appendChild(s)
}
}(document)
</script>
Run Code Online (Sandbox Code Playgroud)
以上将有条件地附加一个仅适用于 IE 浏览器的脚本文件。[1]:https : //developer.mozilla.org/en-US/docs/Web/API/Document/currentScript#Browser_compatibility
小智 5
如果仍然有人在考虑运行IE特定的Javascript,则此代码仍可以在IE(11)和非IE浏览器(Chrome,Firefox,Edge)上进行测试
<script type="text/javascript">
if(/MSIE \d|Trident.*rv:/.test(navigator.userAgent))
document.write('<script src="../nolng/js/ex1IE.js"><\/script>
<script src="../nolng/js/ex2IE.js"><\/script>');
else
document.write('<script src="../nolng/js/ex1.js"><\/script>
<script src="../nolng/js/ex2.js"><\/script>');
</script>
Run Code Online (Sandbox Code Playgroud)