Подтвердить что ты не робот

IE9 Ошибка JavaScript: SCRIPT5007: невозможно получить значение свойства "ui": объект имеет значение null или undefined

Мой сайт хорошо работает в Chrome, Firefox и Internet Explorer 8. Но в Internet Explorer 9 очень странные ошибки запускаются при простое зависание компонентов.

SCRIPT5007: Невозможно получить значение свойства "ui": объект имеет значение null или undefinedScriptResource.axd? D = sTHNYcjtEdStW2Igkk0K4NaRiBDytPljgMCYpqxV5NEZ1IEtx3DRHufMFtEMwoh2L3771sigGlR2bqlOxaiwXVEvePerLDCL0hFHHUFdTOM0o55K0 & t = ffffffffd37cb3a1, строка 181 символ 1914

И после ссылки на ошибку в javascript мне показывают эти биты кода:

onNodeOver:function(B,A){A.ui.onOver(B)},onNodeOut:function(B,A){A.ui.onOut(B)}

Я немного понимаю, как решить эту ошибку. Я видел это решение, но это не решило проблему для меня.

Любые идеи?

4b9b3361

Ответ 1

Многие библиотеки JavaScript (особенно не недавние) не поддерживают IE9 хорошо, потому что он ломается с IE8 при обработке многих вещей.

JS-код, который нюхает для IE, будет часто неактивен в IE9, если только этот код не переписан для специфического обращения с IE9.

Перед обновлением кода JS вы должны использовать метатег "X-UA-Compatible", чтобы заставить вашу веб-страницу работать в режиме IE8.

РЕДАКТИРОВАТЬ: Не могу поверить, что через 3 года мы идем в IE11, и для этого все еще есть голоса.:-) Многие библиотеки JS теперь должны по крайней мере поддерживать IE9 и большинство поддерживают IE10, поэтому маловероятно, что вам понадобится метатег в эти дни, если вы не собираетесь обновлять свою JS-библиотеку. Но будьте осторожны, что IE10 изменяет ситуацию в отношении междоменного скриптинга и некоторых разрывов кода библиотеки на базе CDN. Проверьте версию своей библиотеки. Например, Dojo 1.9 на CDN сломается на IE10, но 1.9.1 решает его.

РЕДАКТИРОВАТЬ 2: Эй, ребята, вам действительно нужно сейчас действовать вместе. Мы сейчас в середине 2014 года!!! Я ВСЕ ЕЩЕ ПОЛУЧИТСЯ! Пересмотрите свои сайты, чтобы избавиться от устаревших зависимостей старого IE!

Вздох... Если бы я знал, что это будет, безусловно, самый популярный ответ, я бы, наверное, потратил больше времени на его полировку...

EDIT 3: Сейчас уже почти 2016. Upvotes все еще тикает... Я думаю, есть много устаревшего кода... Однажды наши программы выйдут из-за нас..

Ответ 2

У меня была такая же проблема в IE9. Я выполнил вышеупомянутый ответ, и я добавил строку:

<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" />

в моем <head>, и он сработал.

Ответ 3

Я написал код, который нюхает IE4 или выше и в настоящее время отлично работает на сайтах для моих корпоративных клиентов, а также на моих личных сайтах.

Включите следующие перечисляемые константные и функциональные переменные в файл include javascript на вашей странице...

//methods
var BrowserTypes = {
    Unknown: 0,
    FireFox: 1,
    Chrome: 2,
    Safari: 3,
    IE: 4,
    IE7: 5,
    IE8: 6,
    IE9: 7,
    IE10: 8,
    IE11: 8,
    IE12: 8
};

var Browser = function () {
    try {
        //declares
        var type;
        var version;
        var sVersion;

        //process
        switch (navigator.appName.toLowerCase()) {
            case "microsoft internet explorer":
                type = BrowserTypes.IE;
                sVersion = navigator.appVersion.substring(navigator.appVersion.indexOf('MSIE') + 5, navigator.appVersion.length);
                version = parseFloat(sVersion.split(";")[0]);
                switch (parseInt(version)) {
                    case 7:
                        type = BrowserTypes.IE7;
                        break;
                    case 8:
                        type = BrowserTypes.IE8;
                        break;
                    case 9:
                        type = BrowserTypes.IE9;
                        break;
                    case 10:
                        type = BrowserTypes.IE10;
                        break;
                    case 11:
                        type = BrowserTypes.IE11;
                        break;
                    case 12:
                        type = BrowserTypes.IE12;
                        break;
                }
                break;
            case "netscape":
                if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) { type = BrowserTypes.Chrome; }
                else { if (navigator.userAgent.toLowerCase().indexOf("firefox") > -1) { type = BrowserTypes.FireFox } };
                break;
            default:
                type = BrowserTypes.Unknown;
                break;
        }

        //returns
        return type;
    } catch (ex) {
    }
};

Затем все, что вам нужно сделать, это использовать любые условные функции, такие как...

т. value = (Browser() >= BrowserTypes.IE) ? node.text : node.textContent;

или WindowWidth = (((Browser() >= BrowserTypes.IE9) || (Browser() < BrowserTypes.IE)) ? window.innerWidth : document.documentElement.clientWidth);

или sJSON = (Browser() >= BrowserTypes.IE) ? xmlElement.text : xmlElement.textContent;

Получите идею? Надеюсь, это поможет.

О, вы можете захотеть сохранить его в QA для функции Browser() после выхода IE10, просто чтобы убедиться, что они не изменили правила.

Ответ 4

проверьте, есть ли запятая в конце.

                            },
                            {
                                name: 'МОФ. Перелив из баков. м3/ч',
                                data: graph_high3,
                                dataGrouping: {
                                    units: groupingUnits,
                                    groupPixelWidth: 40,
                                    approximation: "average",
                                    enabled: true,
                                    units: [[
                                            'minute',
                                            [1]
                                        ]]
                                }
                            }   // if , - SCRIPT5007

Ответ 5

Это сработало для меня в IE 11:

<meta http-equiv="x-ua-compatible" content="IE=edge; charset=UTF-8">

Ответ 6

Вы также можете получить эту ошибку, если вы просматриваете доступ к странице локально (через file:// вместо http://)..

Здесь есть некоторые обсуждения: https://github.com/jeromegn/Backbone.localStorage/issues/55

Ответ 7

Ну, вы также должны попробовать добавить Javascript-код в функцию, а затем вызвать функцию после того, как тело документа было загружено. Это сработало для меня:)

Ответ 8

Я тоже столкнулся с той же проблемой.

Я использовал код ниже на странице .aspx без записи конфигурации аутентификации в файле web.config. После записи настроек в Web.config я могу запустить свой код.

<% If Request.IsAuthenticated Then%>
     <table></table>
<%end if%>