Я часто призываю людей как можно больше разрабатывать в настольных браузерах при создании приложений PhoneGap. Хотя существуют средства удаленной отладки, такие как weinre для удаленной отладки на устройствах, опыт разработчика все еще лучше в настольном браузере, поскольку он дает вам точки останова и возможности проверки памяти. В большинстве случаев вы можете разрабатывать подавляющее большинство приложений в браузере настольного компьютера и переключаться на физические устройства при интеграции с API PhoneGap или для тестирования производительности. Лично я использую Chrome и использую Chrome Developer Tools .
Тем не менее, при разработке из локальной файловой системы вы столкнетесь с несколькими препятствиями в работе настольных браузеров. Большой проблемой является модель безопасности браузера. Если вы попытаетесь асинхронно запросить файлы при загрузке приложения из локальной файловой системы, вы получите сообщение об ошибке:
Не удается загрузить XMLHttpRequest (имя файла или URL). Нулевой источник не разрешен Access-Control-Allow-Origin.
К счастью, есть несколько приемов, которые вы можете использовать, чтобы обойти это … локальные HTTP-серверы и ослабить безопасность браузера. Примечание: я на Mac, и я не знаю синтаксис для них в Windows.
Локальный HTTP-сервер
Первый вариант — использовать локальный веб-сервер для размещения файлов. Вы можете запустить простой HTTP-сервер из любого каталога в OSX, открыв терминал и используя следующую команду:
python -m SimpleHTTPServer 8000
Запустится HTTP-сервер, и вы сможете получить доступ к любому содержимому из этого каталога и дочерних каталогов с URL-адреса http: // localhost: 8000 / Спасибо @mesh за этот трюк.
Однако это будет работать только для статического контента, который находится в вашей структуре каталогов. Если вам нужен динамический контент, вам понадобится какая-то инфраструктура сервера приложений.
Расслабленная безопасность браузера
Хорошо, это здорово, но это не охватывает каждую ситуацию. Что если вам не нужна локальная конфигурация сервера приложений? Что делать, если вы хотите развиваться против удаленных сервисов и не контролируете их? Ну, тебе повезло.
Вы можете отключить ограничения безопасности в Chrome, чтобы разрешить вам доступ к этим службам. Следующая команда разрешит неограниченный доступ из файловой системы, а также разрешит межсайтовые запросы. Убейте Chrome, затем перезапустите из окна терминала со следующими флагами:
open -a /Applications/Google\ Chrome.app –args –allow-file-access-from-files –disable-web-security
Используя эту конфигурацию, вы сможете открыть файл HTML из локальной файловой системы, и этот файл сможет отправлять запросы другим сайтам на доступ к данным или другим ресурсам.
На приведенном ниже снимке экрана видно, что я запустил свое приложение Census Browser из локальной файловой системы, и оно может получать доступ к службам с http://www.tricedesigns.com . С политикой безопасности браузера по умолчанию это было бы невозможно.
ВНИМАНИЕ: ТОЛЬКО ИСПОЛЬЗУЙТЕ ЭТО ДЛЯ ОТЛАДКИ!
Не используйте эту конфигурацию для обычного просмотра веб-страниц, потому что она сделает ваш браузер широко открытым и может быть взломан и взломан. Не просматривайте Интернет, когда вы ослабили политику безопасности.
Спасибо товарищу по Adobe евангелисту Петру Валчишину за то, что он познакомил меня с этим трюком.