【问题标题】:Inject a local javascript into UIWebView将本地 javascript 注入 UIWebView
【发布时间】:2011-11-10 20:56:26
【问题描述】:

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

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

【问题讨论】:

  • 你必须下载 JavaScript,例如:NSString* js = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil] 然后用[webView stringByEvaluatingJavaScriptFromString:js]; 内联它并用[webView stringByEvaluatingJavaScriptFromString:@"someFunction()"]; 调用它

标签: javascript objective-c ios uiwebview


【解决方案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,您可以先下载它并以类似的方式将其加载到 Web 视图中。

【讨论】:

  • 通过这种方法注入,您将无法检查脚本是否已成功注入,因为您不会在 HTML 代码中找到它。以下链接描述了另一种方法(虽然不是那么干净):iphoneincubator.com/blog/windows-views/….
【解决方案2】:

想完成Sherman's answer。 Xcode 将 *.js - 文件定义为源代码并将其添加到项目首选项中的“编译源”中,因此当您尝试在 mainBundle 中获取 pathForResource 时,objc 返回 nil。要解决此问题,您必须将 JavaScript 文件添加到项目首选项中的“构建阶段”>“复制捆绑资源”。 希望对您有所帮助,今天遇到了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多