JQuery Mobile не работает внутри UIWebView
Я прихожу сюда после многих часов поиска решения и пробую разные подходы, чтобы исправить эту проблему, с которой я столкнулся с JQuery Mobile и моим iPad-приложением.
То, что я пытаюсь сделать, - это приложение для отчетов с Fusion Charts. Я успешно отобразил диаграммы в веб-представлениях (UIWebView) с использованием разных методов и следуя различным примерам, но теперь я хочу сделать одну задачу с помощью платформы JQuery Mobile.
Я не с помощью phonegap, и я выполнил шаги к письму, касающемуся интеграции JQuery Mobile + Xcode (я думаю). Графики загружаются без проблем на моем настольном и мобильном браузерах (iPad, iPhone 4 и iPod Touch 2G), но они не загружаются внутри моего UIWebView (хотя я использую тот же точный код).
Это то, что я делаю:
1) Добавление необходимых файлов (JS, CSS и HTML) в проект для их локального использования. После их добавления я перемещаю все с расширением .js из "Скомпилировать источники" в "Копировать ресурсы пакета". Это выглядит так:
![enter image description here]()
![enter image description here]()
2) Загрузите тестовый файл HTML (page_A1.html) в веб-представление:
![enter image description here]()
3) Убедитесь, что все настроено в файле HTML с правильными путями и последней версией фреймворков:
![enter image description here]()
4) Создайте и запустите только для получения пустого веб-представления.
Если я тестирую Javascript с предупреждением вроде этого:
![enter image description here]()
Появится предупреждение о том, что Javascript работает:
![enter image description here]()
И если я помещаю некоторый текст в контейнер, где должна отображаться диаграмма:
![enter image description here]()
Я получу текст внутри веб-представления:
![enter image description here]()
Я также тестировал удаленные ссылки на инфраструктуру вместо локальных и более старых версий библиотек без везения. Ничего особенного не происходит:
![enter image description here]()
Мне кажется obvius, что
$(document).ready(function(){
не замечается или не вызывается xcode.
Это то, что я хотел бы выполнить:
![enter image description here]()
Я не знаю, что еще проверить. Если у вас есть идеи, я был бы более чем благодарен.
Ответы
Ответ 1
Беспокойные парни. Я наконец получил его.
Некоторые старые привычки из дней веб-разработки сыграли меня здесь.
Он настраивается, вам не нужно указывать внутреннюю структуру каталогов для ваших файлов CSS и JS, чтобы это:
<link rel="stylesheet" href="css/jquery.mobile-1.1.0.min.css" />
<script src="js/jquery-1.7.2.min.js"></script>
<script src="js/jquery.mobile-1.1.0.min.js"></script>
shoudl действительно будет таким: Xcode:
<link rel="stylesheet" href="jquery.mobile-1.1.0.min.css" />
<script src="jquery-1.7.2.min.js"></script>
<script src="jquery.mobile-1.1.0.min.js"></script>
Невероятно, сколько времени мне потребовалось, чтобы это выяснить.
Теперь он работает.
Ответ 2
Правильный способ сделать это - загрузить JS файл, как в String, и вызвать метод UIWebView [stringByEvaluatingJavascriptFromString: @ "Javascript here..." ].
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"content" ofType:@"js" inDirectory:@""];
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
NSString *jsString = [[NSMutableString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];
[webView stringByEvaluatingJavaScriptFromString:jsString];
Хотя это не сильно отличается от жесткого кодирования их в html файлах, он еще более упрощает его модуляцию. Счастливое кодирование:)