IOS WKWebView 和 UIWebView 不加载 JavaScript 注册表单,而 Safari 加载

Posted

技术标签:

【中文标题】IOS WKWebView 和 UIWebView 不加载 JavaScript 注册表单,而 Safari 加载【英文标题】:IOS WKWebView and UIWebView isn't loading JavaScript Sign Up form while Safari does 【发布时间】:2017-06-08 20:31:50 【问题描述】:

在 Safari 中,我的注册表单 javascript 代码运行良好,但在 UIWebView 和 WKWebView 中,该表单没有加载。

这是我要查看的代码。

import UIKit
import WebKit


class ViewController: UIViewController, WKNavigationDelegate 

@IBOutlet weak var Webview: UIWebView!

var webView: WKWebView!
var websites = ["lampecompany.com", "lampecompany.com"]

override func loadView() 
    webView = WKWebView()
    webView.navigationDelegate = self
    view = webView

override func viewDidLoad() 
    super.viewDidLoad()

    let url = URL(string: "https://" + websites[0])!
    webView.load(URLRequest(url: url) as URLRequest)
    webView.allowsBackForwardNavigationGestures = true


主页正确打开,然后菜单 -> 应用,在此屏幕上应用此处表单不显示。

这是附上的两个屏幕截图。 Safari 和 WKWebView。

关于我的 WKWebView 开始表现得像 Safari 并像 Safari 浏览器一样正确打开所有内容的任何帮助。

当我将我的网站链接放在这个 WKWebView 浏览器中时,它就可以工作了。 https://github.com/mbarnig/WKWebView

所以为什么不在我的代码中。我在我的应用程序中使用了相同的代码,但使用了相同的代码。

提前感谢您!

【问题讨论】:

【参考方案1】:

您的网页注册表单 (iframe) 存在 SSL 问题。

ios 中,如果你正在加载一个 http url,那么你必须在你的 info.plist 文件中添加 App Transport Security Settings

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

我通过以下方式发现了问题。

    启用 Safari 开发者模式 Safari-> 首选项 -> 高级 -> 显示 菜单上的开发人员选项。 在模拟器上运行您的应用程序并打开 Safari Mac 上的浏览​​器。 进入开发者菜单 -> 模拟器 -> 选择 您的网站网址。 您将获得网页的控制台日志。

请在下方查看您的网页控制台日志。

错误:加载资源失败:发生 SSL 错误,安全连接到 https://www.lampeplacementservices.com/LampeOptin/LampeOptinReferralForm.html

【讨论】:

谢谢!我添加了传输安全设置并允许任意加载是的,然后这对我来说很好。 作为一个额外的提示:如果您知道在没有 SSL 的情况下需要访问的实际 URL 并且无法修复证书,您可以(并且可能应该)不仅允许任意加载,而且设置将您的信息列表设置为仅允许此特定 URL 的例外,请参阅developer.apple.com/library/content/documentation/General/… Apple 可能会在执行 ATS 方面变得更加严格,并要求您在未来提供 NSArbitraryLoads 的原因(我的意思是在提交您的应用程序以供审核时)。 :)

以上是关于IOS WKWebView 和 UIWebView 不加载 JavaScript 注册表单,而 Safari 加载的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 9 中遇到 WKWebview 和 UIWebView 问题

iOS UIWebview,禁用双击,允许点击 WKWebview

iOS H5 容器的一些探究:UIWebView 和 WKWebView 的比较和选择

IOS WKWebView 和 UIWebView 不加载 JavaScript 注册表单,而 Safari 加载

iOS H5容器的一些探究:UIWebView和WKWebView的比较和选择

iOS - UIWebView 被 WKWebView 取代,但对于 Apple 它仍然存在