我的网站是http://www.thetruenorth.co.uk/

我无法让jQuery在IE9中的网站上正常工作。它在所有其他浏览器中都可以正常工作。

我已经意识到,下面的代码会检测到它是否是一个小屏幕(移动设备),从而无法正常工作。如果我删除此位,一切正常。我之所以使用它,是因为我不知道该如何禁用移动电话的JS,但将其保留在台式机上。欢迎提出建议。

$(document).ready(function(){
if(matchMedia('only screen and (max-width: 1023px)').matches)
{}
else {

CODE HERE

    }
});

我感觉有一个错误或我不知道的东西。请有人能使我摆脱痛苦吗?

谢谢

最佳答案

IE9中的简易调试

  • 打开IE9
  • 按F12打开“开发人员”窗口
  • 单击“脚本”选项卡
  • 单击右 Pane 中的“控制台”
  • 尝试加载您的页面

  • 您将看到以下错误:
    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。

    08-25 12:38