当我尝试在 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
文件到您的“编译源”构建阶段。你不想要这个;你想把文件当作一种资源。值得庆幸的是,它很容易修复:
- 选择顶级项目以访问其设置。
- 点击您的应用程序目标,然后选择“构建阶段”。
- 拖动您的
.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/