Внедрить локальный 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" в настройках проекта. Надеюсь, что это было бы полезно, столкнувшись с этой проблемой сегодня.