有没有办法将存储在我服务器上的本地JS文件或JS文件注入到由UIWebView加载的任何网页中?
假设我在该UIWebView中导航到google.com,它会呈现该页面并运行我的JS文件(本地或我的网络服务器)?
答案 0 :(得分:18)
以下代码将在本地注入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,您可以先下载它,然后以类似的方式将其加载到Web视图中。
答案 1 :(得分:1)
想完成Sherman's answer。 Xcode将* .js文件定义为源代码并将其添加到"编译源"在项目首选项中,当你尝试在mainBundle中获取pathForResource时,objc返回nil。要解决此问题,您必须将JavaScript文件添加到"构建阶段" > "复制捆绑资源"在项目偏好中。 希望今天遇到这个问题会有所帮助。