WKWebView 不再与 iOS10 中的 Javascript 交互

Posted

技术标签:

【中文标题】WKWebView 不再与 iOS10 中的 Javascript 交互【英文标题】:WKWebView doesn't interact anymore with Javascript in iOS10 【发布时间】:2016-09-15 21:40:42 【问题描述】:

我有一个必须与网站交互的本机应用程序。它一直正常工作到 ios 9,但在 iOS 10 中,Web 应用程序内的 javascript 代码不再有效。

这是我在按钮的 onClick 事件中使用的 JS 代码示例,正如前面提到的,它在 iOS10 之前就像一个魅力。

function DoSomething()

     var iframe = document.createElement("IFRAME");
     var url='codeToBeUsed://id=1230';
     iframe.setAttribute("src", url);
     document.documentElement.appendChild(iframe);
     iframe.parentNode.removeChild(iframe);
     iframe = null;

当我在 Xcode 上调试应用程序时,通常包含所提供示例中“url”变量内容的 request 变量现在返回一个空白值...

<NSMutableURLRequest: 0x170011070>  URL: about:blank 

我什至测试了放置一个 alert('click'); 但它也没有工作。有人知道如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

使用接近你的代码(我在 src 中传递了一个字符串化的 json),我还在请求中得到了一个令人尴尬的“关于;空白”。

似乎 iOs10 对传递给 iframe 'src' 的内容有一些新的限制。我发现它需要一个有效的 url 才能正确触发请求。

尝试使用:

var url='codeToBeUsed://?id=1230';

编辑:或编码 URI...

【讨论】:

以上是关于WKWebView 不再与 iOS10 中的 Javascript 交互的主要内容,如果未能解决你的问题,请参考以下文章

【iOS】WKWebView使用Cookies遇到的坑

iOS WkWebview不支持 window.open的解决方法

iOS WKWebView 那些坑

与 WKWebView 相关的 iOS 7 崩溃

WKWebView的新特性与使用

iOS Swift5.0 WKWebView使用JS与Swift交互