mik*_*gan 2 javascript jquery internet-explorer-9
我的网站是http://www.thetruenorth.co.uk/
我无法让JQuery在我的IE9网站上工作.它在其他所有浏览器中都能正常运行
我已经意识到这是下面的代码,它检测它是否是一个小屏幕(移动),阻止它工作.如果我删除这一位,一切正常.我使用这个是因为我不知道我是如何禁用移动设备的JS,而是将它保留在桌面上.建议欢迎.
$(document).ready(function(){
if(matchMedia('only screen and (max-width: 1023px)').matches)
{}
else {
CODE HERE
}
});
Run Code Online (Sandbox Code Playgroud)
我感觉有一个我不知道的bug或者什么.请有人能让我摆脱苦难吗?
谢谢
And*_*nez 17
在IE9中进行简单调试
您将看到以下错误:
SCRIPT5009: 'matchMedia' is undefined
scripts.js, line 2 character 2
Run Code Online (Sandbox Code Playgroud)
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/.
Polyfills有时会限制或使用它们,所以要小心.值得注意的是,matchMedia polyfill是由Paul Irish编写的,他是网络技术的公众人物.
关于条件IE包含的注释
IE支持条件注释,因此您可以仅为特定版本的IE包含上面定义的polyfill; 在你的情况下任何<IE10.这在MDN上有记录:http://msdn.microsoft.com/library/ms537512.aspx
<!--[if lte IE 10]]>
<script src="polyfill.js"></script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
这样做是为了让我们尽可能使用浏览器的实现(通常更快,可能具有更多功能)和仅在需要时使用polyfill.