将本地javascript注入UIWebView

时间:2011-09-05 20:45:20

标签: javascript objective-c ios uiwebview

有没有办法将存储在我服务器上的本地JS文件或JS文件注入到由UIWebView加载的任何网页中?

假设我在该UIWebView中导航到google.com,它会呈现该页面并运行我的JS文件(本地或我的网络服务器)?

2 个答案:

答案 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文件添加到"构建阶段" > "复制捆绑资源"在项目偏好中。 希望今天遇到这个问题会有所帮助。