Auslösen von sustStartLoadWithRequest mit mehreren window.location.href-Aufrufen

8

Ich versuche, mit der Methode sentainStartLoadWithRequest des UIWebView mehrere Dinge von einer Webseite in einem UIWebView zurück zu meiner iPhone App zu leiten.

Grundsätzlich ruft meine Webseite window.location.href="command: // foo = bar" auf und ich kann das in meiner App problemlos abfangen. Nun, wenn ich eine Schleife erstellen und mehrere window.location.href-Aufrufe gleichzeitig ausführen, dann wird shouldStartLoadWithRequest nur einmal aufgerufen und der Aufruf, den es erhält, ist das allerletzte fire von window.location.href am Ende der Schleife.

Das gleiche passiert mit dem Webview für Android, nur das letzte window.location.href wird verarbeitet.

    
AlBeebe 29.05.2010, 11:23
quelle

3 Antworten

39
%Vor%

Dies erzeugt einen iframe, setzt seine Quelle auf einen Befehl, der versucht, an die App zu übergeben, und sobald er an den Körper angehängt wird, sollteStartLoadWithRequest aufgerufen werden, dann entfernen wir den iframe aus dem Körper und setzen ihn auf null um die Erinnerung frei zu machen.

Ich habe das auch in einer Android-Webansicht mit sumoOverrideUrlLoading getestet und es hat auch richtig funktioniert!

    
AlBeebe 29.05.2010, 12:24
quelle
3

Ich bin auch auf dieses Problem gestoßen und hier ist meine Lösung, die für mich funktioniert. Alle meine JavaScript-Funktionen verwenden diese Funktion __js2oc (msg), um Daten zu übergeben und Ereignisse zu Objective-C über shouldStartLoadWithRequest: P.S. Ersetzen Sie "command:" durch den von Ihnen verwendeten "appname:" - Trigger.

%Vor%     
Foxnolds 29.09.2011 11:59
quelle
0
___ qstnhdr ___ Auslösen von sustStartLoadWithRequest mit mehreren window.location.href-Aufrufen ___ tag123iphone ___ Verwenden Sie diesen Tag NICHT, es sei denn, Sie wenden sich speziell an Apple's iPhone und / oder iPod touch. Verwenden Sie für nicht hardwareabhängige Fragen das Tag [ios]. Weitere zu betrachtende Tags sind [xcode] (aber nur, wenn es sich um die IDE selbst handelt), [swift], [objective-c] oder [cacao-touch] (aber nicht [cocoa]). Bitte verzichten Sie auf Fragen zum iTunes App Store oder zu iTunes Connect. Wenn Sie C # verwenden, markieren Sie mit [mono]. ___ tag123uiwebview ___ Eine Klasse, mit der Webinhalte in einer iOS-Anwendung angezeigt werden. Beachten Sie, dass UIWebView seit iOS 8 veraltet ist. Es wird von Apple empfohlen, stattdessen WKWebView zu verwenden. ___ antwort4332511 ___

Nein, die URL-Änderung von iframe wird nicht zu sumoOverrideUrlLoading führen, zumindest nicht in Android 2.2.

    
___ qstntxt ___

Ich versuche, mit der Methode sentainStartLoadWithRequest des UIWebView mehrere Dinge von einer Webseite in einem UIWebView zurück zu meiner iPhone App zu leiten.

Grundsätzlich ruft meine Webseite window.location.href="command: // foo = bar" auf und ich kann das in meiner App problemlos abfangen. Nun, wenn ich eine Schleife erstellen und mehrere window.location.href-Aufrufe gleichzeitig ausführen, dann wird shouldStartLoadWithRequest nur einmal aufgerufen und der Aufruf, den es erhält, ist das allerletzte fire von window.location.href am Ende der Schleife.

Das gleiche passiert mit dem Webview für Android, nur das letzte window.location.href wird verarbeitet.

    
___ tag123windowloading ___ window.location ist eine Eigenschaft in JavaScript, mit der der aktuelle Seitenspeicherort abgerufen werden kann. ___ answer7597003 ___

Ich bin auch auf dieses Problem gestoßen und hier ist meine Lösung, die für mich funktioniert. Alle meine JavaScript-Funktionen verwenden diese Funktion __js2oc (msg), um Daten zu übergeben und Ereignisse zu Objective-C über shouldStartLoadWithRequest: P.S. Ersetzen Sie "command:" durch den von Ihnen verwendeten "appname:" - Trigger.

%Vor%     
___ answer2935005 ___
%Vor%

Dies erzeugt einen iframe, setzt seine Quelle auf einen Befehl, der versucht, an die App zu übergeben, und sobald er an den Körper angehängt wird, sollteStartLoadWithRequest aufgerufen werden, dann entfernen wir den iframe aus dem Körper und setzen ihn auf null um die Erinnerung frei zu machen.

Ich habe das auch in einer Android-Webansicht mit sumoOverrideUrlLoading getestet und es hat auch richtig funktioniert!

    
___
diyism 02.12.2010 07:04
quelle