如何在iOS中的UIWebView中使用文档目录中的Javascript?

时间:2013-02-14 07:35:06

标签: javascript ios cocoa-touch uiwebview

在我的应用程序中,我必须从在线加载的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;
}

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

2 个答案:

答案 0 :(得分:1)

  1. 在Xcode的项目导航器(左栏)中,单击蓝色项目图标。
  2. 在主窗口中选择“构建阶段”选项卡
  3. 打开“编译源”部分
  4. 在列表中找到您的Javascript文件并将其删除。
  5. 打开“复制捆绑资源”部分
  6. 将您的Javascript文件添加到列表中
  7. 然后使用以下代码加载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];