Проблема с выполнением скрипта в Safari - PullRequest
1 голос
/ 23 июня 2011

У меня была проблема с некоторыми функциями, работающими во всех браузерах, кроме Safari, и я уменьшил проблему до этого.

На моей странице у меня есть следующие объявления скрипта в конце моего элемента body:

<script type="text/javascript" src="../../Scripts/jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery-ui-1.8.11.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.ui.autocomplete.html.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.validate.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.textchange.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.reveal.js"></script>
<script type="text/javascript" src="../../Scripts/mainScript.js"></script>

Затем в файле mainScript.js я поместил следующий код:

$(function () {
  alert("found");
});

Во всех других браузерах отображается окно сообщения, а в Safari -ничего такого.

Отладчик Safari javascript перечисляет сценарий и может видеть его содержимое, но по какой-то причине он не включен.

Я обнаружил эту проблему, так как пытался вызвать функцию из mainScript.js извстроенный сценарий внутри html-страницы (встроенный сценарий был определен ниже определения mainScript.js), и отладчик Safari пожаловался на то, что функция нигде не найдена.

Что я здесь сделал неправильно и почему нетSafari включает этот скрипт.Все скрипты jquery включены и работают нормально.

Ответы [ 2 ]

1 голос
/ 23 июня 2011

Проблема была обнаружена в другом месте в mainScript.js.

{ class: 'someclass' } было отправлено в качестве параметра к какому-либо методу, а class является зарезервированным словом.

Возможно, это должно было привести к ошибками другие браузеры, но они с радостью проигнорировали это и продолжили.

Исправление было просто изменить его на { 'class': 'someclass' }

1 голос
/ 23 июня 2011

Ваш код кажется хорошим.

Я пробовал с этим кодом

<!DOCTYPE html>
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <h1>Test</h1>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(function () {
                alert("Test");
            });
        </script>
    </body>
</html>

и работает нормально (Safari 5.0.5 7533.21.1 в Windows 7).

Пара вопросов:

  1. Вы пытались вызвать вашу функцию вручную из консоли ошибок? Это работает?
  2. Если вы поместите простой alert("Test."); вне функции готовности документа, отображается ли он?
  3. Если вы вызываете функцию jQuery из консоли ошибок, что вы получаете? Они работают?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...