Inject a local javascript into UIWebView

2020-01-30 06:27发布

Is there a way to inject a local JS file or a JS file that's store on my server into any web page loaded by UIWebView?

Say I navigate to google.com in that UIWebView, it renders that page and also runs my JS file (local or on my webserver)?

2条回答
我想做一个坏孩纸
2楼-- · 2020-01-30 06:41

The following code will inject javascript locally

- (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];
}

Just pass in the name of the file before the js, eg.

[self injectJavascript:@"script"];

To do inject javascript from your server you can download it first and load it into the web view in a similar manner.

查看更多
Animai°情兽
3楼-- · 2020-01-30 06:47

Would like to complete Sherman's answer. Xcode defines *.js - files as source code and adds it to "Compile Sources" in project preferences, so objc returns nil, when you try to get pathForResource in mainBundle. To fix this issue you have to add your JavaScript file to "Build Phases" > "Copy Bundle Resources" in project preferences. Hope it would be helpful, faced this problem today.

查看更多
登录 后发表回答