jquery: «Исключение выброшено и не перехвачено» в IE8, но работает в других браузерах - PullRequest
4 голосов
/ 16 июня 2011

Мой код работает нормально в других браузерах, но в IE8 я получаю «ошибку на странице» - и когда я нажимаю, он говорит: «Исключение выдается и не перехватывается Строка: 16 Char: 15120 Код: 0 URI: http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"

Я пытался связываться с jquery.js (а не с jquery.min.js) и с 1.5.1 / jquery.min.js, но проблема все еще остается.

Может кто-то исправить / улучшитьмой код для меня, или укажите мне, где искать. Спасибо

<script type="text/javascript">
function fbFetch() 
{
var token = "<<tag_removed>>&expires_in=0";

//Set Url of JSON data from the facebook graph api. make sure callback is set with a '?' to overcome the cross domain problems with JSON
var url = "https://graph.facebook.com/<<ID_REMOVED>>?&callback=?&access_token=" + token;

//Use jQuery getJSON method to fetch the data from the url and then create our unordered list with the relevant data.
$.getJSON(url, function(json)
{
    json.data = json.data.reverse();  // need to reverse it as FB outputs it as earliest last!
    var html = "<div class='facebook'>";

    //loop through and within data array's retrieve the message variable.
    $.each(json.data, function(i, fb)
    {
        html += "<div class='n' >" + fb.name;           
        html += "<div class='t'>" + (dateFormat(fb.start_time, "ddd, mmm dS, yyyy")) + " at " + (dateFormat(fb.start_time, "h:MMtt")) + "</div >"; 
        html += "<div class='l'>" + fb.location + "</div >"; 
        html += '<div class="i"><a target="_blank" title="opens in NEW window" href="https://www.facebook.com/pages/<<id_removed>>#!/event.php?eid=' + fb.id + '" >more info...</a></div>'; 
        html += "</div >";              
    }
    );
    html += "</div>";

    //A little animation once fetched
    $('.facebookfeed').animate({opacity: 0}, 500, function(){
        $('.facebookfeed').html(html);
    });
    $('.facebookfeed').animate({opacity: 1}, 500);
});

};

1 Ответ

4 голосов
/ 16 июня 2011

Код выполняет работу в IE8 или он ломается?Причина, по которой я спрашиваю, состоит в том, что, если она работает так, как ожидалось, вы можете просто обернуть ее в блок try{ } catch{ \\do nothing } и поместить в другое место, в котором IE является мусором.

Возможно, вам лучше создать объект длясоздание фейсбукаЧто-то вроде ...

var html = $('<div />');
html.attr('class', 'facebook');

Тогда в каждом вашем цикле вы можете сделать это ...

$('<div />').attr('class', 'n').append(fb.name).appendTo(html);
$('<div />').attr('class', 't').append etc...

Затем добавить html к facebookfeed объекту

Это может удалить область ошибки при использовании одинарных и двойных кавычек при объединении строк, что, в свою очередь, может решить вашу проблему в IE8

$('.facebookfeed').fadeOut(500, function(){
      $(this).append(html).fadeIn(500);
});

Надеюсь, это поможет!

ОБНОВЛЕНИЕ

Метод добавления используется для добавления stuff к объекту jquery.Для получения дополнительной информации см. здесь

Таким образом, чтобы окружить элементы div, как вы упоминали в комментариях, вы сделали бы что-то вроде этого ...

var nDiv = $('<div />').attr('class', 'n').append(fb.name);
$('<div />').attr('class', 't').append(fb.somethingElse).appendTo(nDiv);
// etc

И тогда вы бынужно добавить это к html div следующим образом ...

html.append(nDiv);

Чтобы получить

<div class="facebook">
     <div class="n">
         value of fb.name
         <div class="t">
              value of fb.somethingElse
         </div>
     </div>
</div>

Итак, вы создали новый объект jquery и добавили его взатем добавьте это к html-объекту, который вы затем добавили в div для facebookfeed.Смущает да ?!

...