Отладчик Safari JavaScript всегда пуст - PullRequest
0 голосов
/ 21 мая 2010

Это проблема, с которой я сталкивался на Windows и Mac много-много месяцев, и это сводит меня с ума. Всякий раз, когда я добавляю директиву «отладчик» или устанавливаю точку останова в консоли сценариев Safari, более половины времени код ломается там, где он должен, но представление кода пустое; некоторые файлы JS также пустые, но не все. Консоль сообщает мне, на какой линии я нахожусь, и правильно отображает стек вызовов, плюс я могу просмотреть свой код Я просто не вижу сценарий. Я попытался очистить кэш, отключить кэш и изменить файлы JS (думая, что это может быть из-за того, что код скомпилирован в этот момент). Кажется, ничто не поможет. Я знаю, что если я достаточно обновлю отладчик (щелкните правой кнопкой мыши и перезагрузите), в конце концов я увижу свой сценарий. Но это трудоемкий процесс. И я бы использовал другой браузер, но на самом деле мне нужно использовать Safari в этом случае.

Одна вещь, которая может быть фактором, заключается в том, что я вкладываю функции и назначаю анонимные функции переменным (как Дуглас Крокфорд). Кто-нибудь еще сталкивался с этой проблемой? У кого-нибудь есть решение?

[Редактировать] Я только что заметил, что когда файл приходит с удаленного сервера, он показывает нормально. Мои основные логические файлы, тем не менее, выходят из моего локального стека LAMP с виртуального хоста, и они ВСЕ пустые. Опять же, в конце концов они появятся. Может быть, это вещь Apache?

[Редактировать] Это, похоже, связано с проблемой, написанной в другом месте: например, "Ресурс интерпретируется как другой, но передан с приложением / javascript типа MIME" . Проблема в том, что я проверил мои http-заголовки, мои <meta> теги и мои <script> теги, чтобы убедиться, что типы MIME согласованы.

При извлечении файла JS, согласно curl, мои http-заголовки:

< HTTP/1.1 200 OK
< Date: Fri, 21 May 2010 13:04:42 GMT
< Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8l DAV/2 PHP/5.3.1
< Last-Modified: Fri, 21 May 2010 08:48:15 GMT
< ETag: "dda3a6-2214-48716c07891c0"
< Accept-Ranges: bytes
< Content-Length: 8724
< Cache-Control: no-cache
< Content-Type: application/x-javascript

... в моем index.html это есть:

<meta http-equiv="content-script-type" content="application/x-javascript">

... и я называю мои файлы JS так:

<script type="application/x-javascript" src="Application.js"></script>

Предупреждение, которое я вижу в окне ресурсов Safari:

Resource interpreted as other but transferred with MIME type application/x-javascript

Кажется, что Apache все делает правильно! Я бы представил это как ошибку Safari, но, похоже, это происходит только для моего локального сервера.

1 Ответ

2 голосов
/ 27 мая 2010

Я думаю, что я изолировал проблему, и обходной путь прост: если вам нужно отладить, отключите вкладку Ресурсы в Safari; и если вам нужно отслеживать ресурсы, не ожидайте, что сможете отлаживать, потому что часто вы не сможете.

Я думал, что это проблема только моей локальной среды, но теперь я стал свидетелем этой проблемы на многих сайтах, когда начал тестирование; Я никогда не замечал, потому что я не пробовал отслеживать и отлаживать ресурсы одновременно на других сайтах. Это должно быть проблемой с окном отладки, поскольку это абсолютно не влияет на выполнение скрипта в окне браузера; на самом деле, даже отладчик может отслеживать точки останова и пошаговое выполнение кода, он просто не может показать вам код, через который вы проходите. Эта проблема не появляется в Chrome, поэтому я предполагаю, что это проблема только для Safari, а не проблема более широкого веб-набора.

Я постараюсь опубликовать это на багтрекере Apple.

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