我的网站是http://www.thetruenorth.co.uk/
我无法让jQuery在IE9中的网站上正常工作。它在所有其他浏览器中都可以正常工作。
我已经意识到,下面的代码会检测到它是否是一个小屏幕(移动设备),从而无法正常工作。如果我删除此位,一切正常。我之所以使用它,是因为我不知道该如何禁用移动电话的JS,但将其保留在台式机上。欢迎提出建议。
$(document).ready(function(){
if(matchMedia('only screen and (max-width: 1023px)').matches)
{}
else {
CODE HERE
}
});
我感觉有一个错误或我不知道的东西。请有人能使我摆脱痛苦吗?
谢谢
最佳答案
IE9中的简易调试
您将看到以下错误:
SCRIPT5009: 'matchMedia' is undefined
scripts.js, line 2 character 2
IE9不支持'matchMedia'函数,因此未定义它。尝试在代码中引用它会完全停止JavaScript的执行,因为它不知道如何处理未定义的内容。
怎么回事
jQuery正在您的页面上加载。您可以通过在控制台输出下方的文本输入行中键入“$”并按Enter来确认。控制台将输出有关$定义方式的一些数据。这是jQuery加载的一个很好的信号。这并不是在所有情况下都具有决定性的意义,但是对于这一情况,我们已定案。
发生的事情是您的回调正在onDomReady上运行(通过$(document).ready(...)),但在第一行出现了错误。此错误导致其余的回调无法执行。
验证功能支持
您可以使用caniuse.com来检查哪些浏览器支持功能(JS,CSS等)。在这种情况下:http://caniuse.com/matchmedia。您会注意到IE10是第一个支持matchMedia函数的版本。您可以假定在任何早期版本中,默认情况下都没有matchMedia,引用它会导致错误。
您现在可以做什么
在caniuse.com网站上,顶部是一个水平列表,标题为“资源”。在此区域中,您通常会找到修补不支持特定功能的浏览器的方法。
对于matchMedia,有一个指向“polyfill”的链接,该链接将使用自定义js来模仿matchMedia的功能。网址是:https://github.com/paulirish/matchMedia.js/。
Polyfill有时会受到限制或使用限制,因此要小心。有趣的是,matchMedia polyfill是由Paul Irish编写的,他是Web技术的公开人物。
关于条件IE的注释包括
IE支持条件注释,因此您只能包括上面针对特定版本的IE定义的polyfill;您的情况http://msdn.microsoft.com/library/ms537512.aspx
<!--[if lte IE 10]]>
<script src="polyfill.js"></script>
<![endif]-->
这样做是为了使我们可以在可能的情况下(通常更快,可能具有更多功能)使用浏览器的实现,并仅在需要时使用polyfill。