Inject a local javascript into UIWebView

后端 未结 2 1971
闹比i
闹比i 2020-12-04 22:35

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 UIWebVie

相关标签:
2条回答
  • 2020-12-04 23:17

    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.

    0 讨论(0)
  • 2020-12-04 23:41

    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.

    0 讨论(0)
提交回复
热议问题