Ошибка JavaScript в IE (getElementsByTagName (...). Item (...) 'равен нулю или не является объектом) - PullRequest
0 голосов
/ 05 августа 2011

Глядя на использование приложения Google Accuweather для подсчета пыльцы, однако в IE возникает ошибка.

Вот ссылка на прямой скрипт:

http://www -igprev-opensocial.googleusercontent.com / гаджеты / IFR? Exp_rpc_js = 1 & exp_track_js = 1 & URL = HTTP% 3A% 2F% 2Fwhapowllc.googlepages.com% 2Fpollen.xml и контейнер = igprev & просмотра = по умолчанию и языки = еп & страна = США и дезинфицировать = 0 & v = 45408d622dfd6df4 & родитель = http://www.google.com&libs=core:core.io:core.iglegacy:auth -refresh & is_signedin = 1 & Synd = igprev & вид = по умолчанию

Вот сценарий окружающего звука, о котором идет речь:

        function setContent(url) {
        _IG_FetchXmlContent(url, function (response) {
            if (!response) {
                msg.createDismissibleMessage("Error loading location data. Please try again later.");
                echoDefault();
            } else if (response.firstChild.nodeName != 'error' &&
                parseInt(response.getElementsByTagName('citylist').item(0).getAttribute('us'))
                + parseInt(response.getElementsByTagName('citylist').item(0).getAttribute('intl'))
                + parseInt(response.getElementsByTagName('citylist').item(0).getAttribute('extra_cities'))) {
                mylocation = response.getElementsByTagName('location').item(0).getAttribute('location');
                url = 'http://whapw.accu-weather.com/widget/whapw/weather-data.asp?location=' + mylocation;

                _IG_FetchXmlContent(url, function (response) {
                    if (!response) {
                        msg.createDismissibleMessage("Error loading pollen data. Please try again later.");
                        echoDefault();
                    } else {
                        var tree = response.getElementsByTagName('tree').item(0).firstChild.nodeValue;
                        var weed = response.getElementsByTagName('weed').item(0).firstChild.nodeValue;
                        var grass = response.getElementsByTagName('grass').item(0).firstChild.nodeValue;
                        var mold = response.getElementsByTagName('mold').item(0).firstChild.nodeValue;
                        var airquality = response.getElementsByTagName('airquality').item(0).firstChild.nodeValue;
                        var airqualitytype = response.getElementsByTagName('airqualitytype').item(0).firstChild.nodeValue;
                        var airqualitystyle = '';

Ошибка сообщается из этой строки:

    } else if (response.firstChild.nodeName != 'error' &&

Отлично работает в FF / Chrome, но в IE я получаю:

Сведения об ошибке веб-страницы

Пользовательский агент: Mozilla / 4.0 (совместимый; MSIE 8.0; Windows NT 6.1; Trident / 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0 ; InfoPath.2; 3M / MSIE 8.0) Отметка времени: пятница, 5 августа 2011 г. 08:01:57 UTC

Message: 'getElementsByTagName(...).item(...)' is null or not an object
Line: 986
Char: 12
Code: 0
URI: http://www-igprev-opensocial.googleusercontent.com/gadgets/ifr?exp_rpc_js=1&exp_track_js=1&url=http%3A%2F%2Fwhapowllc.googlepages.com%2Fpollen.xml&container=igprev&view=default&lang=en&country=US&sanitize=0&v=45408d622dfd6df4&parent=http://www.google.com&libs=core:core.io:core.iglegacy:auth-refresh&is_signedin=1&synd=igprev&view=default

Есть идеи, что вызывает эту ошибку?

Заранее спасибо.

1 Ответ

1 голос
/ 05 августа 2011

Есть некоторые странности в некоторых версиях IE, где item (0) возвращает длину NodeList, а не первый элемент.Вместо этого просто получите доступ к элементам, используя индекс:

...getElementsByTagName('...')[0];
...