0

在我的应用程序中,我必须更改从在线加载的网页的字体。

首先,我将我的 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;
}

然而它不起作用。怎么做?

4

2 回答 2

1
  1. 在 Xcode 的项目导航器(左列)中,单击蓝色项目图标。
  2. 在主窗口中选择“构建阶段”选项卡
  3. 打开“编译源”部分
  4. 在列表中找到您的 Javascript 文件并将其删除。
  5. 打开“复制捆绑资源”部分
  6. 将您的 Javascript 文件添加到列表中

然后使用以下代码加载js文件

[[NSBundle mainBundle] pathForResource:@"script.js" ofType:nil];

更新:Xcode 4.5 现在会在您将 javascript 文件添加到您的项目而不将其从“编译源”部分中删除时创建警告:

警告:没有规则为架构 armv7 处理 sourcecode.javascript 类型的文件“ FILEPATH ”

于 2013-02-14T07:55:54.083 回答
0

将 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];
于 2013-02-14T08:36:20.040 回答