2009-04-17 15 views
4

Ich lade eine Zeichenfolge von HTML in eine UIWebView über loadHTMLString. Es produziert eine sehr lange Webseite. Sobald diese Zeichenfolge geladen ist, muss ich zu einem HTML-Anchor-Tag mit dem Attributnamen "name" navigieren. Im HTML könnte ich haben:Wie Referenz HTML-Anker?

//3 pages of text here 
<a name="go here"></a> lots more text here 
//another 3 pages of text here 

Ich brauche die Webseite nach unten scrollen, um "go here" einmal geladen. Die Zuordnungen funktionieren einwandfrei, wenn ein Benutzer auf einen Link innerhalb der Webseite klickt und eine externe URL lädt. Aber in diesem Fall muss ich zunächst eine bereits geladene Webseite nach unten scrollen.

Ich kann immer noch Javascript wie folgt auszuführen:

[MyWebView loadHTMLString:dataString baseURL:[NSURL URLWithString:@"http://www.myscheme.com"]]; 
[webView stringByEvaluatingJavaScriptFromString:@"javascriptFunc('param1');"]; 

Aber ich brauche etwas ähnliches für Tag an den Anker zu navigieren. Irgendwelche Vorschläge?

Antwort

10

Sie können, indem Sie in einer bereits geladenen HTML-Datei zu einem Anker springen:

[webView stringByEvaluatingJavaScriptFromString:@"window.location.hash='#foo'"]; 

diese den Sprung, sans Animation tun werden.

1

Wenn mich nicht alles täuscht, fügen Sie einfach gehen #% 20here zum Ende der URL

EDIT: ahh Sie schon meine geladen. Ist es wirklich ausgeschlossen, die Seite einfach neu zu laden? Der Browser sollte sowieso die meisten davon im Cache ...

+0

Nein. Ich möchte nicht neu laden. Wenn ich die JavaScript-Methode oben mit diesem Wert location.hash = "# myAnchor" verwende, funktioniert es gut. Fügen Sie dem webViewDidFinishLoad von UIWebView hinzu. – 4thSpace