Dynamisch ändern, iframe-Inhalte
Ich habe ein iframe-tag, und ich möchte dynamisch ändern mit jquery-animation. So zum Beispiel das iframe sitzt auf der home-Seite, und wenn ich auf den link, lädt die about.html und wenn die bereit es schieben Sie es nach unten mit einer animation.
Ich habe die grundlegende Logik, aber dann kam es zu dieser
problem:
Wenn ich die Seite aktualisieren, lädt er wieder den Inhalt der index.html Seite, und was ich will ist, dass wenn ich es aktualisieren, es hält immer noch den Inhalt von about.html.
<a href="about.html" target="content">About</a>
<iframe id="content" name="content" align="top" src="index.html"
frameborder="0" width="100%" height="1200px" scrolling="no">
</iframe>
dies ist nur die grundlegende Logik, aber ich brauche Hilfe, wie kann ich erreichen, das erfrischende Teil/
und was ist, wenn ich dont gehören Sie in die gleiche Seite, aber ich will auch noch zu animieren, die Seite übergänge. also, wenn der Benutzer klickt auf einen link zu einer neuen Seite, wird es zu laden und dann zu animieren.Wie kann ich das erreichen. Weil vor kurzem sah ich ein jquery-plugin, callen LocalScroll und Sie erzielen diesen Effekt, aber ich couldnt get es an die Arbeit für neue Seiten
- Müssen Sie die cookies setzen oder einen Weg finden, um zu verfolgen, welche Seite der Benutzer hatte geöffnet, wenn die Seite aktualisieren. Wenn Ihre Seite geladen die
index
wenn der Benutzer die Seite öffnet als Standard, es öffnet den index, es sei denn, Sie machen einen workaround mit cookies oder ähnliches. - ok also was ist, wenn ich dont gehören Sie in die gleiche Seite, aber ich will auch noch zu animieren, die Seite übergänge. also, wenn der Benutzer klickt auf einen link zu einer neuen Seite, wird es zu laden und dann zu animieren.Wie kann ich das erreichen. Weil vor kurzem sah ich ein jquery-plugin, callen LocalScroll und Sie erzielen diesen Effekt, aber ich couldnt get es an die Arbeit für neue Seiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die folgenden zum ändern der
src
- Attribut des iFrame:$("#content").attr('src', 'http://mysite.com/newpage.html');
Oops, sieht aus wie ich falsch verstanden, die Frage zu stellen.
Wenn Sie möchten, schieben Sie es nach unten, können Sie binden einen event-handler, um die
load
Ereignis ( jQuery doc ), etwas zu tun, wenn der frame laden.In diesem Beispiel wird der iframe ausgeblendet, wenn Sie auf den link klicken und wenn er fertig ist, gleitet er nach unten.
Demo
Edit: immer noch falsch verstanden, es!
Speichern den Zustand, die Seite ist zuletzt dargestellt im iframe, können Sie mithilfe HTML5-localStorage.
In der load-Ereignis des iframe speichern Sie die Seite, die es momentan zeigen.
laden und dann wieder mit
localStorage['lastPage']
auf die Seite laden.Aktualisierte demo zeigt sowohl schieben und halten Sie die Seite nach dem aktualisieren.
Ihre Referenz auf die jQuery LocalScroll plugin ist auf dem richtigen Weg. In der Tat, wenn man es richtig umsetzt ich denke, es würde Ihr problem lösen.
Anker-navigation, wie in diesem plugin, jQuery Mobile und anderen Orten, aktualisiert die
window.location
Objekt und Ihren Niederschlag auch in der Adressleiste des Browsers, so dass, wenn eine explizite Aktualisierung der Seite Auftritt, wird der Hash-Standort erhalten bleibt.Die Antwort, dann ist ein Drehbuch zu haben, das Parsen dieser lokalen link aus der Adresse. Hier ist ein generischer JavaScript-code-block, um dies zu demonstrieren:
, Wie es Funktioniert
Wenn die
window onLoad
Ereignis ausgelöst wird, wird der URL gesucht Anker (Hash) links. Wenn diese gefunden ist, werden wir davon ausgehen, dass dies ein Verweis auf eine Seite und so dann übergeben es aniframe_load()
.Diese Funktion macht zwei Dinge. Erstens weist Sie Ihr Ziel Inlineframe auf der Seite übergeben, die über
url
parameter. Zweitens weist Sie den übergeordneten Rahmen einer fiktiven Anker, der wird beibehalten, selbst nachdem die Seite aktualisiert wird.Also, wenn Sie aktualisieren den übergeordneten Rahmen, dass der Anker-text ist gepackt, analysiert und verwendet, um erneuten laden der zuletzt geladenen inline-Seite.
Die Funktion
clear_last_page()
ist einfach eine helper-Funktion, die verhindert, dass zusätzliche Anker-links wird an die URL angehängt.Demonstration
Besuchen Sie diese URL ein:
http://gocontactform.com/stackoverflow/dynamically-change-iframes-content/
Klicken Sie auf den link "Seite 2", um die änderung anzuzeigen. Dann aktualisieren Sie die Seite.
Bemerkenswert
Darauf hingewiesen werden, dass diese Lösung technisch übernimmt die normale Funktion der Verankerung. Also, wenn Sie versuchen, Anker-links, die normalerweise auf der Seite, erhalten Sie möglicherweise unerwünschte Ergebnisse.
Sind Sie gezwungen, verlassen Sie sich auf
iframe_load()
für links gebunden für das inline-frame, anstelle von dem, was Sie modelliert, die in Ihrer Frage (traditionelle Verknüpfung mit einemtarget
- Attribut).Könnte ich auch vorschlagen, dass definieren Sie keine default -
src
Attribut inline. Eher, könnte man hinzufügen, um dieonLoad
handler ein Aufrufiframe_load('page1.html','content')
und verhindern den unnötigen Versuch zum laden der Standard-Seite, wenn Sie sind erfrischend mit verankerten links in der Adresse.Gibt es auch andere Möglichkeiten, das zu erreichen, was Sie fordern. Aber ich glaube, dass diese Lösung einfach zu verstehen und umzusetzen.
Hoffe, das hilft!
Nicht möglich. Wenn Sie eine Seite aktualisieren, Ihr browser sollte die Seite vom server, löschen Sie alle JS Daten.
History-API kann helfen, aber nur für die neuesten Browser.
Wenn die Seite geladen wird, müssen Sie etwas überprüfen, um zu wissen, was der Letzte iframe src geladen. Standardmäßig kein browser kann das wissen. Ein Weg dies zu tun ist die änderung der hash-Wert Ihrer Seite, wenn hit the klicken Sie auf, und Wann immer-Seite geladen wird, überprüfen Sie, wenn vorhanden, diese hash-und trigger einige link mit dem hash.
Ich dies Schreibe: http://jsfiddle.net/estevao_lucas/revsg/4/
Wie gesagt, Michael, Geschichte-API, die Ihnen helfen können.