2014-09-16 8 views
8

Ich habe einige Probleme mit dem Ausführen einer Webanwendung in einem WKWebView (speziell: einige Schaltflächen reagieren nicht). Ich habe this tutorial als Leitfaden verwendet und es ist mir gelungen, das Webview meine Webapp anzuzeigen. So jetzt Ich möchte den JavaScript-Code debuggen.Wie Debuggen von Javascript-Code in einem WKWebView

Ich weiß, dass die Webapp funktioniert, da ich es sowohl in einem Android-Webview als auch unzähligen Browsern (einschließlich Safari auf dem iPad-Simulator, den ich benutze) ausprobiert habe. Nach einigem googeln fand ich how to debug javascript inside a UIWebView using Safari heraus. Leider scheint das mit dem neuen WKWebView nicht zu funktionieren.

Wenn ich zu Develop->iPad Simulator navigiere, wurde mir gesagt, dass es "No Inspectable Applications" gibt. Ich habe das selbe mit einer einfachen App mit einem UIWebView versucht und das Debugging über Safari funktioniert perfekt dort.

Gibt es eine Möglichkeit, JavaScript-Code in einem WKWebView zu debuggen?

Um meine Probleme (mit swift), starten Sie ein neues Einzelbild-Projekt in xCode 6, kopieren Sie den Code (mit freundlicher Genehmigung von kinderas) versehen unten in Ihrer ViewController.swift Datei und ziehen Sie den Ausgang zu View unter View Controller im Dokument Umrisse zu reproduzieren in der Datei Main.storyboard. Beziehen Sie sich auf das Tutorial, das ich oben verlinkt habe, falls es zu Verwirrung kommt.

import UIKit 
import WebKit 

class ViewController: UIViewController { 

    @IBOutlet var containerView : UIView! = nil 
    var webView: WKWebView? 

    override func loadView() { 
     super.loadView() 

     self.webView = WKWebView() 
     self.view = self.webView! 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     var url = NSURL(string:"http://www.kinderas.com/") 
     var req = NSURLRequest(URL:url) 
     self.webView!.loadRequest(req) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

} 

Antwort

15

UPDATE: 2017/09/11

Neuere Versionen von Safari kann dies tun. Aktivieren Sie einfach die develop menu in Safari - developer.apple.com

OLD:

Sie benötigen die nightly build of Safari und zu verwenden, die installieren. Ich hatte das gleiche Problem mit einer App, die ich gerade entwickle. Sobald ich den nächtlichen Build installiert habe, benutze ich diesen und alle meine WKWebViews erscheinen im Entwicklungsmenü.

Hoffe, das ist der Teil, den Sie vermisst haben!

+0

Danke, das hat einen Reiz bewirkt. – overactor

+0

In der neuesten nächtlichen Build sehe ich WKWebViews nicht. Muss ich etwas aktivieren? – Gapipro

+0

@Gapiro müssen Sie das [Entwicklungsmenü] (https://developer.apple.com/library/mac/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html) in Safari aktivieren – Hugo

2

können Sie http://jsconsole.com/ versuchen

Execute: hören und es gibt Ihnen ein Script-Tags auf Ihrer Webseite einzufügen.

Jedes console.log, das Sie auf dieser Seite haben, gibt ihre Ausgabe an diese Seite weiter.

Wenn Sie jsconsole Seite, das nächste Mal in der Nähe sollten Sie script src in HTML-Code ändern, aber Sie können auch zu diesem script src hören:

:listen XXXXX-XXXXX-XXXX-XXXXX 

Ich hoffe, es hilft.

+0

Dies könnte die richtige Lösung für andere sein, aber ich brauchte eine Möglichkeit zu debuggen, ohne den JavaScript-Code überhaupt zu berühren. – overactor

+0

Ok, mach dir keine Sorgen. – Biribu

+0

Es scheint, als wäre jsconsole.com jetzt kaputt,: listen gibt heute keine Ausgabe. –

0

Öffnen Sie die Website oder HTML-Seite in Ihrem Webview, dann öffnen Sie Safari. Klicken Sie auf Entwickeln, dann gehen Sie zum Simulator und Sie finden dort Ihren Website-Titel. Sobald Sie es öffnen, werden Sie den Javascript-Debugger, die Konsole und alles andere sehen, von dem Sie träumen können.