Ich versuche herauszufinden, warum etwas mit Javascript in einer UIWebView nicht funktioniert. Meines Wissens gibt es keine Möglichkeit, innerhalb von XCode einen Haltepunkt für eine js-Datei festzulegen. Kein Problem, ich gehe einfach zurück zu 2004 und verwende Alarmstatus. Oh, warte, sie scheinen auch nicht in einem UIWebView zu funktionieren.
Das einzige, woran ich denken könnte, ist, meine HTML- und JS-Dateien auf meinen Desktop zu exportieren und dann einfach mein Debugging in Safari durchzuführen. Und das funktioniert! Aber natürlich tritt der Fehler, mit dem ich in UIWebView kämpfe, in Safari nicht auf.
Gibt es andere Möglichkeiten zum Debuggen in einer UIWebView oder Tricks, die ich ähnlich wie bei der Old-School-Warnmethode anwenden kann?
quelle
Settings
>Safari
>Advanced
>Web Inspector
<- Aktivieren Sie dieseDiese Abfrage steht ganz oben auf Google. Es lohnt sich also, auf den in iOS5 versteckten remoteInspector zu verlinken. Dies ist bei weitem der beste Weg, um Ihre UIWebViews zu debuggen. Kompilieren Sie ihn nur unter bestimmten Bedingungen, bevor Sie ihn an Apple senden.
quelle
[NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)];
Denken Sie daran, den Aufruf zu entfernen, wenn Sie für die Veröffentlichung erstellen!alert () funktioniert auf jeden Fall bei mir.
Sie können jedoch auch viele andere Dinge tun, z. B. eine eigene DHTML-Warnung erstellen, die in einer Ebene angezeigt wird. Dies kann hilfreich sein, da Sie mehrere Warnungen an einen einzelnen Div senden können, ohne Ihre App zu stoppen. Sie sollten auch in der Lage sein, eine Stapelverfolgung darauf zu schreiben (die Stapelverfolgung befindet sich im Ausnahmeobjekt, und Sie können jederzeit Ihre eigenen Ausnahmen auslösen).
Wenn Sie auf dem Simulator ausgeführt werden, kann Ihr benutzerdefiniertes "alert ()" alternativ Ziel C aufrufen und die Zeichenfolge im Konsolenfenster des iPhone-Simulators anzeigen:
und auf der objektiven C-Seite:
Das heißt, ich habe eine App, die viel mit UiWebView / Javascript zu tun hat, und ich neige dazu, die meisten Javascript-Entwickler in Chrome zu machen (um zu simulieren, was in der iPhone-Umgebung erforderlich ist).
quelle
Ich hoffe es wird helfen.
Schritt 1: Öffnen Sie Safari VC auf Ihrem Mac (hahaha, machen Sie kein Gesicht, wenn ich in Ihrem Macbook sage, folgen Sie einfach meinen Schritten)
Schritt 2: Gehen Sie zu den Safari- Einstellungen und klicken Sie auf Erweitert . Sie erhalten diese Einstellung auf Ihrem MacBook-Bildschirm.
Aktivieren Sie nun das Menü Show to Develop in der Menüleiste. Jetzt ist Ihre ganze Arbeit erledigt. Denkst du, ich mache Witze: P: P no man ...
Schritt 3: Führen Sie Ihre Anwendung in Gerät oder Simulator aus. (Denken Sie nicht, führen Sie es einfach aus.) Gehen Sie in Ihre Anwendung, in der Sie Ihre Webview oder SFSafariViewController öffnen. Bis jetzt hast du nicht verstanden, ich weiß. Sei cool und sieh meinen nächsten Schritt.
Schritt 4: Öffnen Sie Safari in Ihrem MacBook und klicken Sie in der Menüleiste auf Entwicklungsoption. Haben Sie etwas bekommen, das auf Ihrem MacBook, iPad / iPhone richtig angezeigt wird?
Schritt 5: Fertig. Klicken Sie auf Ihr Gerät und dann auf URL. Ein neues Popup wird wie folgt angezeigt.
Schritt 6: Was suchst du jetzt ? Hier sind alle Schritte.
IMP: Vergessen Sie nicht, See Below Image zu aktivieren
quelle
Ich habe das noch nicht ausprobiert, aber schau es dir an dir Weinre an
Sieht sehr vielversprechend aus.
quelle
Dies ist eine alte Frage. Aber ich möchte trotzdem meine zwei Cent teilen.
Ich habe jsconsole.com für das Remote-Debugging verwendet. Es ist einfach. Fügen Sie einfach ein Skript-Tag hinzu und verwenden Sie Konsolenprotokolle zum Debuggen durch Drucken. Dies kann auch zum Debuggen auf einem realen Gerät verwendet werden.
quelle
Alte Frage, aber ich denke, ich habe die beste Lösung gefunden. In meinem Fall müssen Sie uiwebview debuggen, aber ich hatte keinen Zugriff auf die IOS-App und nur auf den HTML-Inhalt und musste einige JS-Protokolle anzeigen. Ich habe den folgenden Code hinzugefügt So laden Sie den Light Firebug JS und zeigen ihn automatisch an:
Aufruf von JS
oder laden Sie es von HTML
quelle
Sie können ein System wie das in PhoneGap verwendete einrichten , um Nachrichten von JavaScript an Objective-C zu senden und von dort aus zu protokollieren. Kurz gesagt, sie setzen document.location mit einem benutzerdefinierten Schema und blockieren dieses Schema im Delegatenrückruf.
Sie können die Tatsache nutzen, dass ein UIWebView die meisten Delegaten für ein WebView sind. WebKit ist für das iPhone technisch nicht dokumentiert, entspricht jedoch größtenteils den Angaben in den Desktop-WebKit-Headern, möglicherweise einschließlich des WebScriptObject. Ich verwende dies zum Debuggen, aber entfernen Sie diesen Code unbedingt, bevor Sie ihn an Apple senden.
Implementieren Sie eine Delegatmethode wie
-(void) webView:(id)inWebView didFinishLoadForFrame:(id)inWebFrame
in einer Unterklasse von UIWebView, um eine WebView von einer UIWebView abzurufen. Rufen Sie super an, wenn Sie diesen verwenden.quelle