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 加载