2014-05-13 7 views
6

Dieses einfache CodeUIWebView Herstellung von: blank, wenn Anfragen iframe beigefügten

var iframe = document.createElement('iframe'); document.documentElement.appendChild(iframe);

injiziert durch UIWebView stringByEvaluatingJavascriptFromString erzeugt Aufruf von UIWebViewDelegate shouldStartLoadWithRequest mit about:blank. Was interessanterweise noch mainDocumentURL auf das Dokument gesetzt hat, das zum Zeitpunkt der Injektion dort war. Für mich bedeutet es, dass ich solchen Code nicht injizieren kann, wann immer ich will - der Wiedereintritt in shouldStartLoadWithRequest macht offensichtlich viele Dinge kaputt. Ich kann alle about:blank Anfragen ablehnen (von shouldStart... zurücksenden) und Codeschnipsel vom Internet tun es ahnungslos, aber es ist kaum eine systematische Lösung.

Irgendwelche Ideen, warum UIWebView dieses verwirrende und nutzlose Verhalten hat?

Antwort

6

Da Sie kein src-Attribut auf Ihrem iframe festlegen, wird standardmäßig about:blank geladen. Wenn Sie dieses Verhalten vermeiden möchten, können Sie unter Verwendung von iframe.setAttribute einen Dummy-Wert festlegen, bevor Sie dem Dokument die iframe hinzufügen und dann die Dummy-Anforderung in shouldStartLoadWithRequest abbrechen.

+0

Ok, so ist es nicht verwirrend und kann sogar instrumentiert werden, um nützlich zu sein. Etwas peinlich :-) –