javascript - 如何在我的 IOS 应用程序中包含我的 html 页面的 js 文件?

标签 javascript iphone html ios uiwebview

当我尝试在 UIWebView 中加载 html 字符串时遇到问题。这就是我正在做的

NSString *temp = [[NSString alloc] initWithFormat:@"<head><script type='text/javascript' src='code39.js'></script><style type='text/css'>#barcode {font-weight: normal; font-style: normal; line-height:normal; sans-serif; font-size: 12pt}</style></head><body><script type='text/javascript'>function get_object(id) {var object = null;if (document.layers) {object = document.layers[id];} else if (document.all) {object = document.all[id];}return object;}get_object('barcode').innerHTML=DrawCode39Barcode('%@',2);</script></body>",[count objectAtIndex:i]];

[mainWebView loadHTMLString:temp baseURL:nil];

问题来了:

<script type='text/javascript' src='code39.js'>

我如何在我的应用程序中添加 code39.js 文件,以便我的 html 可以访问它并在 UIWebview 中加载它。

请帮忙...

最佳答案

最简单的解决方案

假设您的应用附带 JavaScript 代码,并且不通过网络获取它,一个简单的解决方案是使您的 JavaScript 代码内联而不是外部资源。即可以把code39.js的内容放到在 <script> 之间标签,就像您的其他 JavaScript 代码一样。

当然,如果您想添加大量代码并使您的 HTML 进一步复杂化,这将不会很好地工作。你的NSString声明将很快变得(甚至更多)笨拙!


备选方案:将脚本添加为资源

您可以将 JavaScript 文件作为资源文件添加到您的应用程序包中。为此,只需添加 code39.js到您的 Xcode 项目。

请注意,默认情况下,Xcode 将添加 .js文件到您的“编译源”构建阶段。你想要这个;你想把文件当作一种资源。值得庆幸的是,它很容易修复:

  1. 选择顶级项目以访问其设置。
  2. 点击您的应用程序目标,然后选择“构建阶段”。
  3. 拖动您的 .js将文件从“编译源”部分移出并放入“复制捆绑资源”部分。

这将确保 Xcode 在您构建应用程序时将脚本文件复制到“Resources”目录。

寻找脚本资源的URL

一旦您的脚本作为资源包含在内,您需要找到指向它在文件系统上的位置的 URL。幸运的是,Cocoa 使这很容易做到:

NSURL* url = [[NSBundle mainBundle] URLForResource:@"code39" withExtension:@"js"];

url你得到的是code39.js的绝对URL文件在你的应用程序包中。从那里开始,将此 URL 插入另一个字符串应该是非常简单的,如下所示:

NSString* html = [NSString stringWithFormat:@"<script src='%@'>", url];

加载 HTML 后,UIWebView将具有您的脚本的完整 URL,并且它应该执行。此方法适用于我刚刚为 iOS 6.0 创建的测试项目。


(旁注:我强烈建议您也将 HTML 内容与源代码分开。您可以轻松调整上述方法,将纯文本文件的内容读取到 NSString 中。)

关于javascript - 如何在我的 IOS 应用程序中包含我的 html 页面的 js 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12927416/

相关文章:

javascript - JQuery 中减法后负结果的任何解决方案

ios - 使用 AFNetworking 2.0 发布时出现错误(Cocoa 错误 3840)(字符 0 周围的值无效)

iphone - 更改重复使用的单元格的类型?

html - 如何在正确位置的导航栏中的菜单中添加子菜单

javascript - Onclick 事件不适用于单选按钮

javascript - 无法在 JS 中使用 PHP 变量

javascript - 绘图应用程序撤消按钮

javascript - JS onclick 选择输入中的部分文本 - 从光标位置开始到字符串末尾(afterCaret)

javascript - 图像和图层(HTML5、canvas、JS、CSS ??)

ios - 处理 UITableView 方法的对象数组