Внедрить локальный javascript в UIWebView
Есть ли способ вставить локальный JS файл или JS файл, который хранится на моем сервере на любую веб-страницу, загруженную UIWebView?
Скажите, что я перехожу на google.com в этот UIWebView, он отображает эту страницу и также запускает мой JS файл (локальный или на моем веб-сервере)?
Ответы
Ответ 1
Следующий код будет вставлять javascript локально
- (void)injectJavascript:(NSString *)resource {
NSString *jsPath = [[NSBundle mainBundle] pathForResource:resource ofType:@"js"];
NSString *js = [NSString stringWithContentsOfFile:jsPath encoding:NSUTF8StringEncoding error:NULL];
[self.webView stringByEvaluatingJavaScriptFromString:js];
}
Просто передайте имя файла перед js, например.
[self injectJavascript:@"script"];
Чтобы сделать javascript с вашего сервера, вы можете загрузить его первым и загрузить его в веб-представление аналогичным образом.
Ответ 2
Хотел бы завершить ответ Шермана. Xcode определяет *.js - файлы как исходный код и добавляет его в "Скомпилировать источники" в настройках проекта, поэтому objc возвращает нуль, когда вы пытаетесь получить pathForResource в mainBundle. Чтобы исправить эту проблему, вы должны добавить свой файл JavaScript в "Build Phases" > "Copy Bundle Resources" в настройках проекта.
Надеюсь, что это было бы полезно, столкнувшись с этой проблемой сегодня.