【问题标题】:$(...).fancybox is not a function and can't read property 'msie' [duplicate]$(...).fancybox 不是函数,无法读取属性'msie' [重复]
【发布时间】:2016-02-03 13:46:53
【问题描述】:

我有最新版本的 jQuery 并尝试使用 fancybox,但这些消息总是出现:

未捕获的类型错误:无法读取未定义的属性“msie”

未捕获的类型错误:$(...).fancybox 不是函数

我也试过jQuery.noConflict(),我的jQuery是在fancybox.js之前加载的

【问题讨论】:

  • 能否请您发布您的 HTML 和 JavaScript,此错误的最可能原因是 JQuery 库未正确加载。
  • 您似乎没有包含 fancybox 库,并且使用的是 2.x 分支中的 jQuery 版本,该版本不包含浏览器嗅探方法。
  • 实际上 $.browser 已弃用:1.3 并已删除:1.9 并且只能通过 jQuery.migrate 插件使用 - 来自 jquery docs api.jquery.com/jquery.browser
  • 我正在使用 jquery.fancybox-1.3.4.pack.js 和 jquery-1.12.0.min.js。首先加载 Jquery,然后是 fancybox.js,然后是 script.js,我尝试使用 fancybox() 函数
  • Jquery migrate 插件帮了我!谢谢大家,特别是你们! @ᾠῗᵲᄐᶌ

标签: jquery fancybox fancybox-2


【解决方案1】:

您是否尝试过改用新的fancybox? http://fancyapps.com/fancybox/

这是 jquery.fancybox-1.3.4.js 文件中的前几行

;(function($) {
    var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right,    
        selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [],    
        ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i,    
        loadingTimer, loadingFrame = 1,    
        titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('<div/>')[0], { prop: 0 }),    
        isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,

这里会失败

isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,

因为 jquery.browser 从 1.9 开始已被删除,除非您包含 jquery.migrate https://api.jquery.com/jquery.browser/

由于它在那里失败 - $.fancybox 永远没有机会被声明,所以这就是你得到 2 个错误的原因。

新的fancybox不使用jQuery.browser,而是使用IE = navigator.userAgent.match(/msie/i)

所以你必须选择以下之一

  1. 使用新的fancybox
  2. 使用较旧的 jquery 库
  3. 包括 jquery.migrate

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 2013-07-28
    • 1970-01-01
    • 2017-01-16
    • 2012-12-31
    • 2013-01-25
    • 2015-05-07
    • 2017-10-20
    相关资源
    最近更新 更多