IE8上的fancybox:无效参数,无法获取显示属性

时间:2012-01-25 09:00:06

标签: jquery fancybox

  1. 我使用的是jQuery和fancybox 1.3.4的最新版本。
  2. 这是doctype定义:<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; charset=utf-8" />
  3. 我的代码使用ajax来获取数据库中的图像数组并将它们提供给fancybox。发现fancybox工作正常但总是在最后一张图像上崩溃。它输出一个空白框和jQuery错误:

      

    无法获得展示属性。无效的论点。线:1857年   字符:4

    重要提示:我必须修复我的jQuery版本,因为它使用了getAttributeNodesetAttributeNode而不是getAttributesetAttribute

    无论如何,这是我的代码。我希望有人可以帮助我!

    $(".file_image").click( function () {
    
        var id_commessa = $(this).attr("id");
    
        $.ajax({
            type : "POST",
            cache : false,
            url : "ajax_modules/commessa/get_foto_allestimento.php?id=" + id_commessa,
            success: function(data) {
                var items = JSON.parse(data);
                if (items['error'] == 0) {
                    $.fancybox(items['items'], {
                        'type' : 'image',
                        'overlayShow' : true
                    });
                }
                else {
                    $.boxMessage({
                        'message' : items['msg'],
                        'type' : "error"
                    });         
                    return false;
                }
            }
        });
    });
    

    此代码适用于所有浏览器但不适用于IE8 ...... :(

    非常感谢所有人!

1 个答案:

答案 0 :(得分:1)

我不认为IE8支持JSON.parse。然而jQuery有$.parseJSON()做同样的事情,你可以在你的AJAX调用dataType中设置json选项,它将被自动解析为JS对象:

$.ajax({
        type     : "POST",
        cache    : false,
        dataType : 'json',
        url      : "ajax_modules/commessa/get_foto_allestimento.php?id=" + id_commessa,
        success  : function(data) {
            ...

如果JSON.parse在浏览器中具有原生支持,那么$.parseJSON将使用它,否则它将使用eval