当前位置:  开发笔记 > 编程语言 > 正文

使用多个window.location.href调用触发shouldStartLoadWithRequest

如何解决《使用多个window.location.href调用触发shouldStartLoadWithRequest》经验,为你挑选了1个好方法。

我试图通过UIWebView的shouldStartLoadWithRequest方法将多个内容从UIWebView内的网页传回我的iPhone应用程序.

基本上我的网页调用window.location.href ="command:// foo = bar",我能够拦截在我的应用程序中没问题.现在,如果我创建一个循环并立即执行多个window.location.href调用,那么shouldStartLoadWithRequest似乎只会被调用一次,并且它获得的调用是循环结束时window.location.href的最后一次触发.

Android的webview也会发生同样的事情,只会处理最后一个window.location.href.



1> AlBeebe..:
iFrame = document.createElement("IFRAME");
iFrame.setAttribute("src", "command://foo=bar");
document.body.appendChild(iFrame); 
iFrame.parentNode.removeChild(iFrame);
iFrame = null;

所以这创建了一个iframe,将其源代码设置为一个试图传递给应用程序的命令,然后一旦它附加到主体应该调用StartLoadWithRequest,然后我们从正文中删除iframe,并将其设置为null以释放记忆.

我还使用shouldOverrideUrlLoading在Android webview上测试了它,它也正常工作!


自从我2年前发布以来,我想跟进.我写了一个Android和iPhone应用程序,它基本上是一个包含在本机应用程序中的webview.我使用这个解决方案,所以我可以从webview到本机应用程序进行通信,并且在过去的两年里,它的工作完美无缺,我的应用程序已下载超过500k +.
这个解决方案很丑陋,但它似乎是最不可思议的丑陋解决方案.似乎Javascript通过忽略随后被其他window.location调用替换的window.location调用来"优化".感谢您将我从一个非常痛苦的调试会话中解救出来!
推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有