关闭/禁用旧浏览器中的脚本
Posted
技术标签:
【中文标题】关闭/禁用旧浏览器中的脚本【英文标题】:turn off / disable a script in older browsers 【发布时间】:2014-10-08 05:17:29 【问题描述】:我使用的脚本在旧版浏览器(Internet Explorer 最高 IE8 和 Firefox 最高 FF3.5)中存在问题。如果网站加载了这些浏览器,有没有办法禁用它?请简单明了,因为我不懂 javascript,提前谢谢!
附:我想在旧浏览器中禁用的脚本是 fullpage.js
【问题讨论】:
火狐3.5?那是古老的。没有人使用它。对于 IE,您可以使用<!--[if lte IE 7]>
您将不得不在 fullpage.js 本身中使用条件语句。 navigator.appVersion
和 navigator.userAgent.toLowerCase().indexOf('firefox') > -1
的组合是检测 Firefox 版本的良好开端。至于检测 IE,html 条件语句不是一个好的解决方案,因为您不能排除其他浏览器需要的脚本包含,因为其他浏览器不会解析条件语句。但是,您可以使用 <!--[if lt IE 9]><script>var oldIe = true;</script><![endif]-->
并检测 oldIe 是否存在于 fullpage.js 中
你能说得更清楚点吗?我必须插入一个条件注释: 但是我必须在脚本标签中写什么?
我只关心 IE。看到这个msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx
谢谢,我明白如何使用条件注释,但是我必须在里面插入什么?是否有特定规则可以禁用另一个脚本?
【参考方案1】:
如前所述,除了低于 IE8 的浏览器之外,您不必担心其他任何事情。
编辑:将其更改为包括其他浏览器。我有点厚!
首先,从here 下载 Modernizr 插件并将其调用到您的页面中。
<script type="text/javascript" src="/pathTo/modernizr.js"></script>
然后照常调用 fullpage.js 文件
<script type="text/javascript" src="jquery.fullPage.js"></script>
然后在 document.ready 中,检测是否支持 CSS3 并调用 fullpage 方法。
$(document).ready( function()
if($(html).hasClass('csstransitions'))
$('#fullpage').fullpage();
);
这意味着只有在浏览器支持 CSS3(通过检测过渡)时才会打开它的功能,从而忽略 IE8 及更低版本并包括所有其他浏览器。
【讨论】:
感谢您的帮助!写这个是否 fullpage.js 不会在 IE7 和更早版本中加载? (这就是我想做的) 应该是gte
(大于或等于),而不是lte
(小于或等于)IE8
而不是IE7
,因为fullPage.js is fully functional on all modern browsers, as well as some old ones such as Internet Explorer 8, 9, ...
所以我必须写: 对吗?但它也会在其他浏览器中加载吗? (Webkit,Moz,O)
哎呀我的错误,我在示例中更改了它
大家好,如果我只在这个条件注释中调用 fullpaje.js,它是否也可以在其他浏览器(Chrome、FF、O..)中工作?【参考方案2】:
要解决此问题,您可以确保代码检查导致错误的函数在运行脚本之前可用。
if (typeof yourFunctionName == 'function' && typeof yourFunctionName2 == 'function')
//Your code here
使用 && 仅在所有函数都存在时才运行代码。
这将确保您的代码仅在兼容的浏览器上运行并避免任何猜测。
Can I Use 还有助于跟踪可用功能,适用于各种版本的浏览器 http://caniuse.com/#cats=JSAPI
【讨论】:
以上是关于关闭/禁用旧浏览器中的脚本的主要内容,如果未能解决你的问题,请参考以下文章
如何在运行 Selenium 脚本时禁用 chrome 浏览器中的身份验证弹出窗口