【问题标题】:IE9 not accepting standard jQuery SyntaxIE9 不接受标准的 jQuery 语法
【发布时间】:2011-07-04 12:00:40
【问题描述】:

这真的很简单。我有以下代码.. 它适用于所有其他 html5 兼容浏览器(Safari 5、Chrome 9、FireFox),但在 IE9 (RC) 中出现以下错误。

jquery.min.js

行:16 错误:对象不支持属性或方法“getElementsByTagName”

jquery-ui.min.js

行:40 错误:对象不支持属性或方法“选项卡”

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=9" />
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js"></script>

    <script type="text/javascript">
        $(function () {
            $("#ribbon").tabs();
        });
    </script>
</head>
<body>
    <header>
        <span id="branding"></span>
        <div id="ribbon-navigation">
        <div id="ribbon">
    <ul>
        <li><a href="#ribbon-1">1</a></li>
        <li><a href="#ribbon-2">2</a></li>
        <li><a href="#ribbon-3">3</a></li>
        <li><a href="#ribbon-4">4</a></li>
    </ul>
    <div id="ribbon-1" class="ribbon-strip">
        @Html.Partial("Menus/Ribbons/__H1")
    </div>
    <div id="ribbon-2" class="ribbon-strip">
        @Html.Partial("Menus/Ribbons/__2")
    </div>
    <div id="ribbon-3" class="ribbon-strip">
        @Html.Partial("Menus/Ribbons/__3")
    </div>
    <div id="ribbon-4" class="ribbon-strip">
        @Html.Partial("Menus/Ribbons/__4")
    </div>
</div>
        </div>
    </header>
</body>
</html>

如果我的 CSS 没有产生正确的样式,我可以理解 - 但看起来它完全忽略了$("#ribbon").tabs();。有什么想法吗?

【问题讨论】:

  • 你能用非缩小的库运行它吗,让我们知道错误的行号是什么?
  • 根据 endophage 在下面的回答 - 您的构造正在执行 javascript 代码,此时页面的其余部分已加载且 &lt;div id="ribbon"&gt; 尚未被解析。使用 ready() 函数将“暂停”您的脚本,直到页面的 DOM 完成构建。
  • 其实我已经发现了错误。进一步挖掘产生了更多富有成效的结果...bugs.jquery.com/ticket/8052 - 这显然是 IE 中的一个错误,并在 昨天 出现的 jQuery 更新中得到了修复!我不得不参考 jQuery 1.5.1,一切都很好。
  • 我该怎么办?我回答了我自己的问题,但其他人可能会觉得这很有用。如何适当地结束问题?只需点击close 按钮?
  • @Marc B:OP 使用.ready()方法。做$(function(){...})是它的捷径。

标签: jquery jquery-ui html internet-explorer-9


【解决方案1】:

进一步挖掘产生了更多富有成果的结果... bugs.jquery.com/ticket/8052 - 这显然是 IE 中的一个错误,并在昨天发布的 jQuery 更新中得到了修复!我不得不参考 jQuery 1.5.1,一切都很好。

感谢所有提供有用建议的人。它们都是非常好的想法,但这次它只是 IE9 的一个错误而已。

【讨论】:

  • 我刚遇到这个问题,1.5.1 确实修复了 IE9 问题。有谁知道有比 1.5.1 更新的版本适用于 IE9 吗?
【解决方案2】:

试试:

$(document).ready(function () {
    $("#ribbon").tabs();
});

【讨论】:

  • 方法 tabs 似乎被调用(或尝试),所以我认为 DOM 就绪功能正在工作。
  • $(document).ready(handler) 等同于$(handler) - api.jquery.com/ready
  • 如果你的意思是它在没有.ready 的情况下工作,它无论如何都会被调用。表示该对象不支持该属性或方法,可能是因为 id="ribbon" 的 div 尚不存在,所以从 $("#ribbon") 返回 null
  • @Jonathon Bolster 他们说...我从来没有设法让它发挥作用...诚然我很久没有尝试过,因为我刚刚养成了做@的习惯987654329@.
  • Endophage:正如@Jonathon 所说,OP 正在使用.ready() 的快捷方式。当没有 DOM 元素匹配时,jQuery 方法不会给出错误。他们只是默默地失败。
猜你喜欢
  • 2015-01-23
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多