Javascript работает нормально, но очень медленно в IE, почему? - PullRequest
2 голосов
/ 23 ноября 2010

Извините за мое невежество, потому что я начинающий программист, и мои языковые ошибки - я не являюсь носителем английского языка.

У меня есть страница, которая при некоторых событиях щелчка вызывает некоторый JavaScript и загружаетчерез php содержимое в iframe, которое также выполняет некоторые действия javascript (над собой и на родительской странице).Все хорошо работает на FF и все функции работают в IE тоже.Но производительность в IE ужасно медленная ... одна из основных функций - изменить непрозрачность некоторых изображений при наведении мыши, и IE требуется 2 с + для отображения новой непрозрачности.Зачем?и что более важно, что я могу сделать, чтобы это исправить?

Заранее спасибо, Ирэн

Ответы [ 4 ]

4 голосов
/ 23 ноября 2010

IE имеет ужасно медленный движок JavaScript по сравнению со всеми другими крупными браузерами (я говорю о IE8, а не IE9 +) ... это просто так.Возможно, вы захотите отключить определенные вещи в IE и, конечно, оптимизировать ваш скрипт в целом.

Вы можете, например, захотеть отключить замирание в IE, или дать ему гораздо меньше кадров (более длительный интервал между шагами)из-за его фильтра непрозрачности DirectX он намного медленнее других браузеров в большинстве ситуаций затухания.

Для профилирования проблем производительности, специфичных для IE, я настоятельно рекомендую dynaTrace AJAX edition это бесплатный профилировщик производительности, созданный только для IE.

1 голос
/ 23 ноября 2010

Тесты, показывающие, насколько медленными могут быть вещи в IE: http://www.favbrowser.com/chrome-vs-opera-vs-firefox-vs-internet-explorer-vs-safari/

Возможно, вам придется поэкспериментировать с различными способами манипулирования DOM, чтобы повысить производительность в IE.

0 голосов
/ 23 ноября 2010

Хорошо, вот, пожалуйста, это сценарий, который создает большинство проблем ... есть предложения?

$(function() {

$("#myTable").draggable({
    containment:'parent',
    drag:function() {
        $("#myTable").css("opacity", "0.6");
        $("#myTable").css("background-image", 'none');
        $("#galframe").css("opacity", "1.0");

    },
    stop:function(){
        $("#myTable").css("opacity", "1.0");
        $("#galframe").css("opacity", "0.6");
        var $image = $("#galframe").contents().find("#jgal div.active img");
                var src=$image[0].src;
                $("#myTable").css("background-image", 'url(' + src + ')');
                $position = $("#myTable").position();
                $("#myTable").css("backgroundPosition", (-parseInt($position.left)+549).toString()+ "px " + (-parseInt($position.top)+20).toString() + "px");
                $("#myTable").css("background-repeat", "no-repeat");
            }
});
});
0 голосов
/ 23 ноября 2010

IE, как известно, немного медленный (сарказм). Я не знаю точно, что вы делаете, но, может быть, вы захотите удалить некоторые эффекты, если пользователь использует IE? Может быть, вы делаете много изменений DOM.

Было бы удобно увидеть код, чтобы дать вам советы о том, как повысить производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...