如何在 iOS 的 UIWebView 的文档目录中使用 Javascript?
Posted
技术标签:
【中文标题】如何在 iOS 的 UIWebView 的文档目录中使用 Javascript?【英文标题】:How to use Javascript from document directory in UIWebView in iOS? 【发布时间】:2013-02-14 07:35:05 【问题描述】:在我的应用程序中,我必须更改从在线加载的网页的字体。
首先,我将我的 CustomJava.js 文件存储在在线托管中,然后我使用该文件来更改我的 ios 应用程序中的字体。
这是我的一些代码。
- (void)webViewDidFinishLoad:(UIWebView *)webView
NSString *js = [NSString stringWithFormat:@"var script = document.createElement('script');"
"script.type = 'text/javascript';"
"script.src = 'http://www.gustohei.com/SYjs/customJava.js';"];
js = [NSString stringWithFormat:@"%@ document.getElementsByTagName('head')[0].appendChild(script);", js];
[self.webViewOfBrowser stringByEvaluatingJavaScriptFromString:js];
UIApplication *app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = NO;
很好,可以正确更改字体。
就我而言,我想将该 JS 文件保留在我的文档目录中,并希望使用文档目录中的该文件。我不想从网上使用。
所以我写了以下代码。
- (void)webViewDidFinishLoad:(UIWebView *)webView
NSString *jsPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"customJava.js"];
NSString *js = [NSString stringWithFormat:@"var script = document.createElement('script');"
"script.type = 'text/javascript';"
"script.src ='%@'",jsPath];
js = [NSString stringWithFormat:@"%@ document.getElementsByTagName('head')[0].appendChild(script);", js];
[self.webViewOfBrowser stringByEvaluatingJavaScriptFromString:js];
UIApplication *app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = NO;
但是它不起作用。 该怎么做?
【问题讨论】:
【参考方案1】:-
在 Xcode 的项目导航器(左栏)中单击蓝色项目图标。
在主窗口中选择“构建阶段”选项卡
打开“编译源”部分
在列表中找到您的 Javascript 文件并将其删除。
打开“复制捆绑资源”部分
将您的 Javascript 文件添加到列表中
然后使用以下代码加载js文件
[[NSBundle mainBundle] pathForResource:@"script.js" ofType:nil];
更新: 现在,Xcode 4.5 会在您将 javascript 文件添加到项目中而不将其从“编译源”部分中删除时创建警告:
警告:没有规则来处理类型文件“FILEPATH” 架构 armv7 的 sourcecode.javascript
【讨论】:
这不是工作兄弟。我像你说的那样将相同的 JS 文件加载到 Bundle 中。但是当我使用 Online 的 JS 文件时,字体并没有改变。 此链接可能会对您有所帮助***.com/questions/5733883/…【参考方案2】:将 javascript 文件和 html 保存在文档目录中的同一文件夹中,只需将 javascript 包含在您通过 webview 加载的 HTML 中
<script src = "CustomJava.js" type="application/javascript"></script>
然后像这样在代码中调用 javascript 函数:(例如“changeFont();”是您要通过 webview 调用的函数的名称)
NSString *javascriptFunctionCall = [NSString stringWithFormat:@"changeFont('%@');",self.fontSize];
[bookWebView stringByEvaluatingJavaScriptFromString:javascriptFunctionCall];
【讨论】:
我不明白你的意思兄弟?我正在从 web 加载页面,并希望在 UIWebView 中将 js 代码插入到从 web 加载的页面中。 我正在加载网页浏览器之类的页面,并希望将我的 JS 代码附加到 UIWebView 中加载的页面中。 好的,你不能从网络编辑页面吗?它不只托管在您的服务器上? 没有。当我将 JS 文件保存在主机中并读取该 js 文件并附加到我加载的页面时,我可以追加,这很好。我想处理本地文件。不是来自托管。 哦!!!那么我不认为给 script.src 提供本地路径会像你一样工作!我需要考虑是否可能以上是关于如何在 iOS 的 UIWebView 的文档目录中使用 Javascript?的主要内容,如果未能解决你的问题,请参考以下文章
UIWebView 能否用于在 iOS 应用中查看和编辑 XML 文档