【问题标题】:DNN jquery error Microsoft JScript runtime error: Object doesn't support this property or method in IEDNN jquery 错误 Microsoft JScript 运行时错误:对象在 IE 中不支持此属性或方法
【发布时间】:2011-03-21 17:38:54
【问题描述】:

我第一次在 Dotnetnuke 中尝试 jquery,但它不起作用。我的 ascx 文件看起来像

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="DesktopModules.demo.WebUserControl" %>
<script type="text/javascript">
    jQuery(document).ready(function () {
        jQuery("#featured > ul").tabs({ fx: { opacity: "toggle"} }).tabs("rotate", 7500, true);
  });
</script>

我的代码文件看起来像:

using System;
using System.Web.UI;
using DotNetNuke.Entities.Modules;

namespace DesktopModules.demo
{
    public partial class WebUserControl : PortalModuleBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
                {
                if (!Page.IsPostBack)
                {
                    DotNetNuke.Framework.jQuery.RequestRegistration();
                }
            }
            catch (Exception exc)
            {
                DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
    }
}

在 IE 中我不断收到错误

Microsoft JScript 运行时错误:对象在 IE 中不支持此属性或方法

上线

jQuery("#featured > ul").tabs({ fx: { opacity: "toggle"} }).tabs("rotate", 7500, true);

请帮忙解决这个错误,不知道还能尝试什么。

【问题讨论】:

  • 欢迎来到 StackOverflow!当您提出问题时,右侧有一个方便的如何格式化框。值得一读,就像问题区域上方 [?] 中的the page linked 一样。 (这次我已经为你格式化了。)

标签: jquery dotnetnuke


【解决方案1】:

您确定“#featured > ul”选择器吗?通常您指的是定义选项卡的ul 的父元素,而不是ul 本身。所以:

jQuery("#featured").tabs(...

Live example


如果上面没有做到这一点,一些建议:

...不确定还有什么可以尝试...

尝试调试它。在 2011 年,您可以使用大量工具在运行时遍历代码并查看到底出了什么问题。

  • IE8 和 IE9 内置了半合理的调试器和工具,或者使用 VS.Net
  • IE6 和 IE7 没有内置任何东西,但您也可以将 VS.Net 与它们一起使用
  • Firefox 没有任何内置功能,但有一个出色的免费 Firebug 插件
  • Chrome 内置了良好的调试器和工具
  • Safari 内置了很好的调试器和工具(您可能需要在选项中启用菜单项)
  • Opera 内置了良好的调试器和工具

所以鉴于错误在这一行:

jQuery("#featured > ul").tabs({ fx: { opacity: "toggle"} }).tabs("rotate", 7500, true);

我会把它拆开,这样我就可以看到哪一部分出了问题:

var x = jQuery("#featured > ul");
x = x.tabs({ fx: { opacity: "toggle"} });
x.tabs("rotate", 7500, true);

...因为它在功能上等同于链式(全单行)版本。

【讨论】:

    【解决方案2】:

    感谢您的回复,我已按照建议将其分解。它在以下行失败: x = x.tabs({ fx: { opacity: "toggle"} });

    标签未定义。我在我的 ascx 页面中添加了以下几行,但无济于事:

    <script type="text/javascript" src="~/Resources/Shared/Scripts/jquery/jquery-ui-1.7.3.custom.min.js"></script>
    <link type="text/css" href="~/Resources/Shared/Scripts/jquery/css/ui-lightness/jquery-ui-1.7.3.custom.css" rel="stylesheet" /> 
    

    标签仍然未定义。是否有正确的方法来包含这些文件?

    【讨论】:

    • 这应该是对您原始问题的评论或编辑 - 这不是真正的答案。
    【解决方案3】:

    我可以看到您的问题的可能原因:.tabs() 不是 jquery 的一部分 - 它是称为 jquery UI 的不同(密切相关)脚本的一部分。

    您只添加了对 jquery 的引用,并没有添加对 jquery UI 的引用。所以 .tabs() 会给你一个“标签未定义”的错误。

    您可以在此处阅读有关 .tabs() 的信息:http://jqueryui.com/demos/tabs/

    您可以从这里下载它:http://jqueryui.com/download ... 或者更好的是,从 Google CDN 加载它。

    要引用 .tabs() 您需要将其添加到 .ascx 文件的第二行:

    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui.min.js"  />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多