2012-11-30 1 views
7

Eine iOS 6 iPad App zeigt Inhalte in zwei UIWebViews. Wenn beide Web-Ansichten einen jQuery Image Rotator enthalten, wird immer nur einer funktionieren. Running < iOS 6, beide funktionieren ordnungsgemäß.iOS 6 mehrere UIWebViews: Javascript läuft nur in einem

Wenn der Inhalt der nicht animierenden Webansicht neu geladen wird, beginnt er zu arbeiten, und der andere stoppt. Außerdem kann ich NUR im Simulator dazu führen, dass die angehaltene Webansicht gestartet wird (und die andere gestoppt wird), indem Sie darauf klicken/ziehen.

Wenn eine der Webansichten JavaScript nicht enthält, stoppt das Neuladen der angehaltenen Webansicht nicht das Funktionieren des anderen.

Mein erster Gedanke war, dass dies ein Fokus-Problem war, aber das letzte Bit scheint das zu widerlegen und so eine Art von Verschmutzung zwischen den beiden Web-Ansichten. Die beiden Rotatoren haben dieselben Selektoren und dieselben js-Skripte, aber die js-Dateien werden lokal zwischengespeichert und werden eindeutig umbenannt, um während des Caching-Prozesses jegliches Weiterschalten zu verhindern.

Ich kann nichts in den iOS 6 Release Notes finden, um eine Änderung im Fokus zwischen verschiedenen UIWebViews zu beschreiben.

Die Web-Ansichten sind in einem XIB, aber nicht Geschwister der gleichen Eltern UIView.

Das gewünschte Verhalten ist, offensichtlich keine der Web-Ansichten schlafen zu gehen.

+0

Nicht sicher, dass Sie auf diesem einen Glück haben werden. Ich habe umfangreiche Änderungen an der Javascript-Engine in iOS 6 gehört. Es wurde als Erfolg gewertet, weil funktional niemand einen Unterschied bemerkte. Es gibt einen, wenn auch stumpfen Verweis auf die Arbeit, die hier getan wurde: http://en.wikipedia.org/wiki/IOS_6 Wenn auf der Seite nach Javascript suchen. – TheBasicMind

Antwort

1

JavaScript funktioniert in mehreren UIWebViews, aber es hängt vom JavaScript ab. Die Verwendung von JQuery oder anderem externen JavaScript-Code kann ein Problem sein, wenn Sie es mit einem href verknüpfen. Sie können diese Probleme lösen, indem Sie den Code aller externen JavaScript-Bibliotheken in den HTML-Code Ihrer Webseite kopieren. Dies ist der Grund, warum einfaches JavaScript gut funktioniert. Beispiel:

Screenshot of JavaScript in multiple web views

Dies ist ein UITableView mit einem UIWebView in jedem UITableViewCell. In WebViewDidFinishLoad mache ich [webView stringByEvaluatingJavaScriptFromString:@"document.write('hey hallo'+new Date().getTime())"];

1

Haben Sie versucht, ein WebView der Größe Ihrer 3 webViews und die Verwendung von 3 iFrames in diesem 1 UIWebView, die jede javascript-fähige Seite laden?

+0

Ja, aber ich habe Probleme mit der Positionierung dieser Seiten, da sie zwei Hälften eines großen zweiseitigen Bildes enthalten. –

+0

@pro_metedor hmm ... Oh, was wenn ... Okay, also mach dein UIWebView doppelt so groß, dann mache das iFrame doppelt so groß (stelle die Position mit CSS ein) dann kleb das ganze UIWebView in eine UIScrollView und zoome auf 0.5 (50%) Also ist das UIWebView wieder normal groß, aber der Inhalt ist doppelt so klein, also passt alles. :) Boo-yah! –

+0

@pro_metedor CSS sollte sie gut positionieren! Wirklich :) –