在我的应用程序中,我必须从在线加载的webPage中更改字体。
首先我将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;
}
然而它不起作用。 怎么做?
答案 0 :(得分:1)
然后使用以下代码加载js文件
[[NSBundle mainBundle] pathForResource:@"script.js" ofType:nil];
更新: Xcode 4.5现在会在您刚刚将javascript文件添加到项目时创建警告,而不会将其从“编译源”部分中删除:
警告:没有规则来处理类型的文件' FILEPATH ' sourcecode.javascript for architecture armv7
答案 1 :(得分:0)
将javascript文件和HTML保存在文档目录中的同一文件夹中,只需在通过webview加载的HTML中包含javascript
<script src = "CustomJava.js" type="application/javascript"></script>
然后在你的代码中调用javascript函数:(例如“changeFont();”是你要通过webview调用的函数的名称)
NSString *javascriptFunctionCall = [NSString stringWithFormat:@"changeFont('%@');",self.fontSize];
[bookWebView stringByEvaluatingJavaScriptFromString:javascriptFunctionCall];