【问题标题】:Is it possible to load local Javascript libraries to an online page on iPhone?是否可以将本地 Javascript 库加载到 iPhone 上的在线页面?
【发布时间】:2011-02-16 08:53:16
【问题描述】:
我们将实现一个混合应用程序,它使用内置的 Safari 视图 (UIWebView) 来处理一些社交内容。我们将使用一些智能 Javascript 库来处理页面上的一些 UI 内容,并且我们不想一直从服务器加载这些库。
是否可以将一些 *.js 打包到应用程序包中,然后在浏览时访问它?希望你能理解我的问题。
如果这种“混合模式”有效,也许我们也可以打包一些常见的 UI *.png-s。
【问题讨论】:
标签:
javascript
iphone
safari
uiwebview
【解决方案1】:
我相信你可以,你有几种可能性,比如:
你有 UIWebView 上的 -stringByEvaluatingJavaScriptFromString: 方法 - 我相信你可以执行你的 js 文件的内容......我不确定,虽然从未尝试过......但它应该可以工作。
您可以创建 NSURLProtocol 的子类,并为 http:// 模式注册您的子类。这样,您的类可以充当 Internet 和使用 http:// 架构的任何组件之间的代理 - 您可以从本地缓存返回 js 和 png 文件。
您可以单独下载html内容,并将链接替换为本地file://链接,然后使用UIWebView显示此格式化字符串。
希望这会有所帮助。
【解决方案2】:
试试
NSString *jsLibFile = [[NSBundle mainBundle] pathForResource:@"library" ofType:@"js"];
if (jsLibFile) {
NSString *libSrcTxt = [NSString stringWithContentsOfFile:jsLibFile];
if (libSrcTxt) {
webView stringByEvaluatingJavaScriptFromString:libSrcTxt;
}
}
(打开文件,并在 webView 中评估 JS。)