【发布时间】:2011-01-11 03:50:47
【问题描述】:
我有一个从资源文件夹加载本地 HTML 文件的 UIWebView。 现在,这个 HTML 文件里面有 Javascript。
我的问题是,有没有办法将 XCode 变量传递给在 UIWebView 中加载的 HTML 文件,我可以将它传递给 HTML 中的 Javascript 函数。
非常感谢您的任何帮助或建议。
【问题讨论】:
标签: html iphone cocoa-touch xcode
我有一个从资源文件夹加载本地 HTML 文件的 UIWebView。 现在,这个 HTML 文件里面有 Javascript。
我的问题是,有没有办法将 XCode 变量传递给在 UIWebView 中加载的 HTML 文件,我可以将它传递给 HTML 中的 Javascript 函数。
非常感谢您的任何帮助或建议。
【问题讨论】:
标签: html iphone cocoa-touch xcode
你可以构造一个 Javascript 字符串然后传入-stringByEvaluatingJavaScriptFromString:,例如
NSInteger u = get_integer_from_user();
NSString* script = [NSString stringWithFormat:@"call_your_function(%d);", u];
[webView stringByEvaluatingJavaScriptFromString:script];
【讨论】:
onload 中的 initialize() 以避免双重初始化。
-webViewDidStartLoad: 中传递脚本。或者,您可以使用 -loadHTMLString:baseURL: 构建您的 HTML。
你可以这样做
[_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"Handler.method(%@);", variable]];
Handler.method 是一个 Javascript 函数。确保页面已加载,直到您评估此 Javascript,否则它将无法工作。我自己使用这种方法并且它有效,尽管我必须对数据进行 base64 编码才能使其工作。取决于您存储在其中的值。
【讨论】:
Handler.method 只是一个普通的 Javascript 函数。 UIWebView 尝试处理此 JS 调用并在任何 script-元素或导入的 Javascript 中查找此方法。所以你可以在webView加载的HTML文件中导入/定义你的JS,然后你可以从Cocoa调用任何Javascript函数。