【问题标题】:How to use Javascript from document directory in UIWebView in iOS?如何在 iOS 的 UIWebView 的文档目录中使用 Javascript?
【发布时间】: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;
}

但是它不起作用。 该怎么做?

【问题讨论】:

    标签: javascript ios cocoa-touch uiwebview


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

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

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

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

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

    【讨论】:

    • 这不是工作兄弟。我像你说的那样将相同的 JS 文件加载到 Bundle 中。但是当我使用 Online 的 JS 文件时,字体并没有改变。
    • 此链接可能会对您有所帮助stackoverflow.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 提供本地路径会像你一样工作!我需要考虑是否可能
    猜你喜欢
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 2015-11-25
    • 2012-03-01
    • 2013-07-23
    相关资源
    最近更新 更多