【发布时间】:2011-02-25 11:03:52
【问题描述】:
我试图通过 UIWebView 的 shouldStartLoadWithRequest 方法将 UIWebView 内的网页中的多个内容传递回我的 iPhone 应用程序。
基本上我的网页调用 window.location.href = "command://foo=bar" 并且我能够在我的应用程序中拦截它没问题。现在,如果我创建一个循环并一次执行多个 window.location.href 调用,那么 shouldStartLoadWithRequest 似乎只被调用一次,并且它获得的调用是在循环结束时最后一次触发 window.location.href 。
同样的事情发生在 Android 的 webview 上,只有最后一个 window.location.href 被处理。
【问题讨论】:
-
我找到了一个聪明的解决方案。为每个命令动态创建一个 iframe 并将其 src 设置为“command://foo=bar”,您可以在一个循环中多次触发它,并且每次都会调用 shouldStartLoadWithRequest !现在研究如何优化这一点。我认为创建数千个 iframe(即使它们是隐藏的)并不好。对此有何建议?
-
我也会尝试优化每个位置调用。如果您每分钟只能发送 60 个呼叫,那么请确保您使用足够的查询变量和片段来干扰每个呼叫,以便每次呼叫处理多个命令。此外,您可能想查看 wkWebView:nshipster.com/wkwebkit,它可以自动执行大部分过程并且更可靠。
标签: iphone uiwebview window.location