【问题标题】:How to pass an XCode variable to the HTML file in resources folder?如何将 XCode 变量传递给资源文件夹中的 HTML 文件?
【发布时间】:2011-01-11 03:50:47
【问题描述】:

我有一个从资源文件夹加载本地 HTML 文件的 UIWebView。 现在,这个 HTML 文件里面有 Javascript。

我的问题是,有没有办法将 XCode 变量传递给在 UIWebView 中加载的 HTML 文件,我可以将它传递给 HTML 中的 Javascript 函数。

非常感谢您的任何帮助或建议。

【问题讨论】:

    标签: html iphone cocoa-touch xcode


    【解决方案1】:

    你可以构造一个 Javascript 字符串然后传入-stringByEvaluatingJavaScriptFromString:,例如

    NSInteger u = get_integer_from_user();
    NSString* script = [NSString stringWithFormat:@"call_your_function(%d);", u];
    [webView stringByEvaluatingJavaScriptFromString:script];
    

    【讨论】:

    • KennyTM,我明白这一点。在我的 html 文件中,我有一个 javascript,其中有函数 initialise(),我在 onload 上调用它。即 。现在我可以简单地把它写成 initialise(number s) 并继续吗?
    • @neha:是的。但在这种情况下,您需要删除 onload 中的 initialize() 以避免双重初始化。
    • 但是,如果我在 onload() 中删除了 initialise(),则脚本在加载时找不到任何要执行的内容并且它不起作用..
    • @neha:您需要为您的 Web 视图设置一个代理并在 -webViewDidStartLoad: 中传递脚本。或者,您可以使用 -loadHTMLString:baseURL: 构建您的 HTML。
    • 感谢您的帮助,KennyTM!真的很有帮助。
    【解决方案2】:

    你可以这样做

    [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"Handler.method(%@);", variable]];
    

    Handler.method 是一个 Javascript 函数。确保页面已加载,直到您评估此 Javascript,否则它将无法工作。我自己使用这种方法并且它有效,尽管我必须对数据进行 base64 编码才能使其工作。取决于您存储在其中的值。

    【讨论】:

    • JoostK,你在这里提供了 webView 的函数名,那么你在哪里指定脚本名称和路径?
    • 就我而言,Handler.method 只是一个普通的 Javascript 函数。 UIWebView 尝试处理此 JS 调用并在任何 script-元素或导入的 Javascript 中查找此方法。所以你可以在webView加载的HTML文件中导入/定义你的JS,然后你可以从Cocoa调用任何Javascript函数。
    • 即使我的 javascript[嵌入在 html 中] 是在资源文件夹中而不是写在 xcode 文件中,这是真的吗?因为我一般是在运行的时候提供这个路径的。
    • HTML 不是 Xcode 需要编译的东西,所以它在资源中很好。资源只是复制到您的应用程序包中,而无需尝试编译它。因此,如果您的 HTML 按预期加载,您的 Javascript 也将被加载。
    猜你喜欢
    • 1970-01-01
    • 2021-09-29
    • 2011-06-28
    • 2017-09-21
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多