Öffnen Sie ein WKWebview target="_blank" - link in Safari
Ich bin versucht, meine Hybrid-IOS-app, die mithilfe von Swift und WKWebviews um einen link zu öffnen, hat target="_blank"
oder wenn die URL enthält http://
, https://
oder mailto:
im Mobile Safari.
Vom diese Antwort bekomme ich diesen code.
func webView(webView: WKWebView!, createWebViewWithConfiguration configuration: WKWebViewConfiguration!, forNavigationAction navigationAction: WKNavigationAction!, windowFeatures: WKWindowFeatures!) -> WKWebView! {
if navigationAction.targetFrame == nil {
webView.loadRequest(navigationAction.request)
}
return nil
}
Zuerst, dass das nichts für mich. Zweitens, ich will es in einem neuen Fenster geöffnet. Und ich fand, dass dieser code soll so etwas machen...
if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") {
UIApplication.sharedApplication().openURL(requestUrl)
}
Wie bringe ich diese beiden zusammen, und Sie zu arbeiten? Was muss ich hinzufügen der ViewController Erklärung, damit es funktioniert?
InformationsquelleAutor Jed Grant | 2015-06-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Code aktualisiert für iOS 10 Swift 3:
window.open(url, "_blank")
Empfangener Fehler:
cannot assign type viewcontroller to type wkuidelegate
, korrigiert mitclass ViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {
Ich kann auch bestätigen, javascript-Fenster.offen() für mich gearbeitet
InformationsquelleAutor ltrainpr
In (von hier aus)
Fügen Sie dann die Funktion (von hier aus, mit Ergänzungen)...
self.webView.UIDelegate = self
arbeiten in iOS 10 Ihre ViewController muss ErbenWKUIDelegate
. alsoclass ViewController: UIViewController, WKNavigationDelegate, WKScriptMessageHandler, WKUIDelegate
Ich habe diesen code und aktualisiert für iOS 10 und Swift 3 (siehe meine Antwort für die konvertierte code).
createWebViewWith configuration: WKWebViewConfiguration,
ist nicht genannt wird, aus irgendeinem Grund. Ich habe nicht einloadView
Funktion, aber ich habe dieself.webView.uiDelegate = self
ist in derviewDidLoad
Funktion. Was bin ich?Dies scheint nicht zu funktionieren für links geöffnet mit JavaScript, d.h.,
window.open(url, "_blank")
. Funktioniert es für Sie?Ich habe gerade verwendet diese einen Monat.. Jetzt funktioniert es nicht mehr.
InformationsquelleAutor Jed Grant
Ersten add -
WKNavigationDelegate
undwebviewWk.navigationDelegate = self
let urlString = url!.absoluteString
tun? Die variableurlString
nicht verwiesen wird überall nach der Initialisierung.nach langem Kampf habe ich gefunden, was genau benötigt wird.Ich danke Ihnen so sehr.
Dies scheint nicht zu funktionieren für links geöffnet mit JavaScript, d.h.,
window.open(url, "_blank")
. Funktioniert es für Sie?WKNavigationType.LinkActivated ausgelöst wird, mit BELIEBIGEN link klicken, nicht nur, wenn
target="_blank"
. Dieses snippet öffnen sich ALLE links in Safari.InformationsquelleAutor jose920405
InformationsquelleAutor hojin
Swift 4.2
InformationsquelleAutor Daniel