Приложение ASP MVC3 генерирует ошибки JScript в IE8, но работает в FireFox 4 - PullRequest
2 голосов
/ 24 июня 2011

У меня есть приложение ASP MVC3, которое отлично работает (в отладке VS 2010) в FireFox 4, но когда я запускаю приложение в IE8, я получаю кучу ошибок JScript в jquery-1.5.1 и jquery.validate.unobtrusive.

В моем _SiteLayout.cshtml я включаю следующий JavaScript:

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>     
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/QMSCommon.js")" type="text/javascript"></script>  

...

<!--bottom of layout page - just before /body -->
@(Html.Telerik().ScriptRegistrar().jQuery(false).DefaultGroup(group => group.Combined(true).Compress(true))) 

Когда я запускаю это приложение в IE8, я получаю «MicrosoftОшибка времени выполнения JScript: «undefined» является нулевым или не является объектом »в jquery.validate.unobtrusive.min.js сразу.Если я продолжу, я получу сообщение «Ошибка времени выполнения Microsoft JScript: объект не поддерживает это свойство или метод» в JQuery-1-5-1.

Включаю ли я правильный файл JS - правильный ли это порядок (илизначительно)?

ОБНОВЛЕНИЕ:

Я выделил проблему для моего Javascript (в QMSCommon.js).Все содержимое этого файла находится здесь:

$(document).ready(function () {
    //Make fields set to datePicker css class have a datepicker control
        $('.datePicker').datepicker(
            { buttonImage: '/content/images/calendar_edit.png',
              buttonImageOnly: true,
              showOn: 'both'
          }); 
});

Если я закомментирую часть выбора даты, мой сайт будет работать в IE8.Видите ли вы что-нибудь с этим кодом, что IE8 не нравится?

Ответы [ 2 ]

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

Хорошо, это немного смущает.Первоначальная проблема была связана с тем, что я не включал скрипт jquery-ui :-).Firefox не выдавал ошибку, IE это делал, но не в .datepicker, а где-то глубоко внутри jQuery, что меня отбрасывало.В любом случае.

Кроме того, я обновил свой код, чтобы получать информацию о JQuery от Google:

Отлично работает.

0 голосов
/ 25 июня 2011

Я рекомендую использовать операторы console.log, чтобы понять, почему что-то неожиданно становится нулевым.Проверьте отладчик, чтобы посмотреть на трассировку стека.Это может помочь.Из того, что вы показали, невозможно сказать больше.Но пошаговое выполнение или использование консольных операторов для просмотра отклонений в Firefox, Chrome и IE8 поможет вам решить эту проблему.

Одна вещь, которую я заметил, заключается в том, что IE 8 намного медленнее рендерит вещи, когдаэто связано с чем-то нулевым, когда его нет в других браузерах, это может быть связано с предположением о времени выполнения.Это может быть проблемой, когда вам просто нужно отложить выполнение JavaScript с помощью setTimeout или _.defer, если вы используете подчеркивание.

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

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