remove initial scale jscript
This commit is contained in:
parent
710adec037
commit
1681048279
@ -19,6 +19,9 @@ import WebKit
|
||||
var dynamicHeight: Bool = true
|
||||
|
||||
var callHandlerName: String?
|
||||
var webviewModel: WebViewModel? {
|
||||
return model as? WebViewModel
|
||||
}
|
||||
|
||||
override open func setupView() {
|
||||
super.setupView()
|
||||
@ -34,14 +37,6 @@ import WebKit
|
||||
if let messageHandlerName = messageHandler {
|
||||
wkUserController.add(self, name: messageHandlerName)
|
||||
}
|
||||
//inital-scale is necessary to update display correct scale
|
||||
let source: String = "var meta = document.createElement('meta');" +
|
||||
"meta.name = 'viewport';" +
|
||||
//depends on how much clint driven
|
||||
"meta.content = 'initial-scale=1.0';" +
|
||||
"var head = document.getElementsByTagName('head')[0];" + "head.appendChild(meta);";
|
||||
let wkScript = WKUserScript(source: source, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
|
||||
wkUserController.addUserScript(wkScript)
|
||||
|
||||
//server driven addition script
|
||||
if let jsScript = jsScript {
|
||||
@ -65,12 +60,11 @@ import WebKit
|
||||
guard let model = model as? WebViewModel else { return }
|
||||
self.delegateObject = delegateObject
|
||||
|
||||
if model.callHandler != nil || model.jsScript != nil {
|
||||
if model.callHandler != nil || model.jsScript != nil {
|
||||
/*
|
||||
webView's configuration property is immutable.
|
||||
In order to add call handler into webview, need to create a new webview.
|
||||
callHanlder
|
||||
*/
|
||||
*/
|
||||
webView?.removeFromSuperview()
|
||||
let webView = createWebView(messageHandler: model.callHandler, jsScript:model.jsScript)
|
||||
addSubview(webView)
|
||||
@ -91,7 +85,6 @@ import WebKit
|
||||
webView?.loadHTMLString(htmlString, baseURL: nil)
|
||||
}
|
||||
bringSubviewToFront(loadingSpinner)
|
||||
//TO DO: local path?
|
||||
}
|
||||
|
||||
func pinSpinnerView() {
|
||||
@ -115,20 +108,29 @@ extension WebView : WKUIDelegate {
|
||||
// hide loading
|
||||
loadingSpinner.pause()
|
||||
|
||||
//update webview's heigth when webview is ready
|
||||
if !dynamicHeight {
|
||||
return
|
||||
}
|
||||
//update webview's heigth when webview is ready
|
||||
webView.evaluateJavaScript("document.readyState", completionHandler: { [weak self] (result, error) in
|
||||
if result == nil || error != nil {
|
||||
return
|
||||
}
|
||||
webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { (result, error) in
|
||||
guard let height = result as? CGFloat else { return }
|
||||
self?.webViewHeight?.constant = height
|
||||
self?.delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self!)
|
||||
if let _ = webviewModel?.jsScript {
|
||||
/* evaluateJavaScript only works when webview contains userscrpt.
|
||||
otherwise, it would return WKErrorDomain Code=4 "A JavaScript exception occurred"
|
||||
*/
|
||||
webView.evaluateJavaScript("document.readyState", completionHandler: { [weak self] (result, error) in
|
||||
if result == nil || error != nil {
|
||||
return
|
||||
}
|
||||
webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { (result, error) in
|
||||
guard let height = result as? CGFloat else { return }
|
||||
self?.webViewHeight?.constant = height
|
||||
self?.delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self!)
|
||||
})
|
||||
})
|
||||
})
|
||||
} else {
|
||||
//get webview's content viewheight when no javescript setup
|
||||
self.webViewHeight?.constant = webView.scrollView.contentSize.height
|
||||
self.delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self)
|
||||
}
|
||||
}
|
||||
|
||||
public func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user