JavaScript не работает в Internet Explorer - PullRequest
3 голосов
/ 17 марта 2012

Я написал немного JavaScript для перемещения рекламного баннера, когда пользователь прокручивает.Тем не менее, он работает нормально со всеми браузерами, кроме Internet Explorer ... Кажется, мой JS даже не запускается ... Я использую последнюю версию IE9.

Как я ее вызываю:

<html>
<head>
  <script src="./js/move-it.js" type="text/javascript"></script>
</head>
<body>
  ...
  <div id="bird">
    <iframe ...>...</iframe>
  </div>
  <script type="text/javascript">
    start(); // method in move-it.js
  </script>
</body>

Веб-сайт: http://lolkitten.org

Кстати, кто-нибудь может мне сказать, как не допустить, чтобы баннер хорошо врезался в мой колонтитул?Я попытался поместить div в качестве «стопора» над нижним объявлением и использовать его атрибут «offset-top», но я думаю, что он всегда давал мне слишком маленькое значение, то есть он продолжал падать ...1010 * Приветствия

Ответы [ 4 ]

8 голосов
/ 31 марта 2012

Мне удалось заставить его работать сейчас.Проблема была в том, что IE не разрешает модификаторы const в JavaScript.Я просто изменил их на var, и все заработало нормально.

4 голосов
/ 20 января 2017

IE, все версии не терпят распространенных ошибок, допущенных программистами PHP. Вот список синтаксиса Javascript, не принятого IE, для всех функций, включая AJAX:

(Эти синтаксические ошибки IE Javascript не являются ошибками в Opera, Chrome и Firefox.)

  1. вы не можете установить значение переменной по умолчанию в параметрах объявления функции function thisFunction(something='x'){ thingy.here;} не разрешено и будет считаться необъявленной функцией при вызове thisFunction().

  2. Передача объектов в качестве параметров функции может привести к неожиданным результатам: function(someObject) может работать или не работать в зависимости от контекста.

  3. необъявленные переменные останавливают скрипт

  4. event.preventDefault(); не может быть вызван внутри вызываемой функции и остановит сценарий

  5. event.preventDefault(); должен быть объявлен первым, в ссылке на событие перед всеми остальными функциями ... это не так в других браузерах. То есть IE по умолчанию должен работать асинхронно ...

    Может и не ожидаться, когда программисты PHP впервые научатся пользоваться синхронным характером Javascript как урок № 1 в языке. Этот пример не работает (не работает) в теге 'a', если поместить его непосредственно в тег ссылки

    onclick="function() { 
        if(typeof someFunction === 'function') { 
            event.preventDefault(); 
            someFunction('anyParameter'); 
        };"
    

    Когда вы используете тот же код на странице, которая не реализует и не объявляет функцию someFunction (). какая трата времени!

  6. onclick='clickChild(this);' не работает в IE ... и я не знаю почему. Это фактически остановит содержащуюся ссылку, и ничего не произойдет. Кажется, противоречит приведенному выше поведению warnDefault, которое работает только как первая функция в ссылке на событие, и если не вызывается первым, будет следовать содержащая ссылка. Так что противоречивая логика в IE. --- по состоянию на 21 января 2017 г. в сегодняшнем обновлении Google Chrome вышеуказанная функция также не работает в Chrome.

В формах тег 'button' неправильно возвращает значение для отправки формы. Это может быть исправлено в новых версиях IE или нет. Для моего текущего проекта: yad1.org тег кнопки необходим для многоязычных имен кнопок отправки, для которых требуется одинаковое значение для всех языков.

Вывод: IE нужно удалить из Windows и забыть навсегда.

Реальная трата времени на отладку. IE нужно войти в дружественный к программисту мир Javascript.

0 голосов
/ 15 июня 2018

Довольно долгое время спустя ... та же проблема на клиентском компьютере с IE11 (Firefox & Edge работает нормально).Файл в (UNC)

file: /////server/share/directory/index.html

был загружен правильно, но JavaScript не активирован.

Решение в этом случае:

  1. «Свойства обозревателя»> Вкладка «Безопасность»> Зона «Локальная интрасеть»> Кнопка «Сайты»> Отключить третий параметр «Включить все сети»пути (UNCs) "(требуется перезагрузка страницы)
  2. " Свойства обозревателя "> вкладка" Безопасность "> Зона" Надежные сайты "> кнопка" Сайты "> Добавить файл: // сервер" на сайты (IEтребуется перезагрузка)

Зона Локальная интрасеть

Zone Local intranet

Теперь все работает.

0 голосов
/ 17 марта 2012
  1. В меню Сервис выберите Свойства обозревателя, а затем перейдите на вкладку Безопасность.
  2. Щелкните зону Интернета.
  3. Если вам не нужно настраиватьНастройки безопасности Интернета, нажмите Уровень по умолчанию.Затем выполните шаг 4
    Если вам необходимо настроить параметры безопасности Интернета, выполните следующие действия:

    a.Нажмите Пользовательский уровень.
    b.В диалоговом окне «Параметры безопасности - зона Интернета» нажмите «Включить активные сценарии» в разделе «Сценарии».

  4. Нажмите кнопку «Назад», чтобы вернуться на предыдущую страницу, а затем нажмите кнопку «Обновить», чтобызапустить сценарии.

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