3 回答
TA贡献1951条经验 获得超3个赞
更改页面的位置可能会导致以下问题:
所有setInterval和setTimeout立即停止在位置更改上
取消位置更改后,每个innerHTML都不起作用!
你可能会得到其他非常奇怪的错误,真的难以诊断......
这里提供的解决方案是:
继续使用相同的URL技术(在js和objective-c上),只需使用iframe更改位置:
var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", "js-frame:myObjectiveCFunction";
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
TA贡献1862条经验 获得超6个赞
从Objective-C:您可以将字符串中的javascript函数传递给UIWebView。网页将执行它并返回结果。这样您就可以传递变量并从Javascript中获取数据。
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
例:
NSString *script = @"document.getElementById('myTextField').value";
NSString *output = [myWebView stringByEvaluatingJavaScriptFromString:script];
来自Javascript:将您的数据传递到URL中。拦截UIWebViewDelegate中的URL请求。通过返回NO获取数据并中止URL请求。
<script>window.location = "url://key1/value1"; </script>
拦截URL请求
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
添加回答
举报