Heim  >  Artikel  >  Web-Frontend  >  So implementieren Sie einen aktualisierungsfreien Sprung zwischen zwei Iframe-Seiten in Vue

So implementieren Sie einen aktualisierungsfreien Sprung zwischen zwei Iframe-Seiten in Vue

PHPz
PHPzOriginal
2023-04-10 14:14:352055Durchsuche

Als Front-End-Ingenieur stoßen wir häufig auf Situationen, in denen wir zwischen zwei verschiedenen Webseiten wechseln müssen. Im Vue-Framework erfordert das von ihm befürwortete Single Page Application (SPA)-Modell unterschiedliche Ideen und Methoden beim Durchführen von Seitensprüngen. Wie implementiert man also einen aktualisierungsfreien Sprung zwischen zwei Iframe-Seiten in Vue? In diesem Artikel wird dieses Problem besprochen und demonstriert.

1. Springen mit dem Fensterobjekt

Der einfachste Weg zum Springen ist die Verwendung des location.href-Attributs des Fensterobjekts, zum Beispiel:

window.location.href = 'http://www.example.com';

Diese Methode eignet sich für normale Webseitensprünge oder Seiten in einem einzigen iframe-Sprung. Wenn wir jedoch zu einem anderen Iframe springen müssen, müssen wir zuerst das Fensterobjekt des Iframes abrufen und dann darauf springen. Angenommen, wir haben jetzt zwei verschachtelte Iframes:

<iframe id="iframe1" src="http://www.example1.com"></iframe>
<iframe id="iframe2" src="http://www.example2.com"></iframe>

Wir müssen zu einer Seite innerhalb des zweiten Iframes springen, indem wir das Fensterobjekt der Schaltfläche im ersten Iframe abrufen und keine Aktualisierung erreichen. Der spezifische Implementierungscode lautet wie folgt:

// 获取 iframe2 的 window 对象
var iframe2Window = document.getElementById('iframe2').contentWindow;
// 跳转到 iframe2 中的一个页面,无刷新
iframe2Window.location.href = 'http://www.example2.com/page1.html';

Der Vorteil dieser Methode besteht darin, dass sie einfach und leicht zu implementieren ist und auch Iframe-übergreifende Sprünge erzielen kann. Aber sein Mangel ist auch sehr offensichtlich, das heißt, es kann keine domänenübergreifenden Sprünge zwischen Vue-Komponenten realisieren.

2. Verwenden Sie die globale Vue-Instanz, um zu springen.

In Vue können wir zur Seite springen, indem wir auf die globale Vue-Instanz zugreifen. Die spezifische Methode besteht darin, das Router-Objekt über das Attribut $router aufzurufen, um einen aktualisierungsfreien Sprung zu erreichen. Unter der Annahme, dass wir den Router über VueRouter instanziiert haben, können wir den Routensprung wie folgt implementieren:

// 跳转到指定路径,无刷新
this.$router.push('/path/to/your/page')

Der Vorteil dieser Methode besteht darin, dass sie eine bessere Anpassungsfähigkeit und Steuerbarkeit erreichen und gleichzeitig die Vue-Designprinzipien strikt einhalten kann für Einzelseitenanwendungen. Wenn Sie jedoch eine Vue-Instanz verwenden, um in einen Iframe zu springen, wird die Seite trotzdem aktualisiert und ein aktualisierungsfreier Sprung kann nicht erreicht werden.

3. Verwenden Sie postMessage, um Werte domänenübergreifend zu übergeben.

Wenn wir zwischen dem Iframe der übergeordneten Seite und dem Iframe der untergeordneten Seite wechseln müssen, treten normalerweise domänenübergreifende Probleme auf. Derzeit ist die beste Lösung die Verwendung der HTML5-API-postMessage. Mit dieser API können wir Werte zwischen verschiedenen Fenstern übertragen, um domänenübergreifende Sprünge zu erzielen. Die spezifischen Implementierungsschritte lauten wie folgt:

Post sendenNachricht auf der übergeordneten Seite:

// 该消息为跳转信息,detail为目标跳转路径
window.frames[0].postMessage({ type: 'jump', detail: '/path/to/your/page' }, '*');

Hören Sie sich die Nachricht auf der untergeordneten Seite an:

window.addEventListener('message', function (msg) {
  if (msg.data.type === 'jump') {
    // 将子页面重定向到目标页面
    window.location.replace(msg.data.detail);
  }
}, false);

Der Vorteil dieser Methode besteht darin, dass sie einen domänenübergreifenden Sprung mit Parametern realisieren kann erleichtert uns die Durchführung des Seitensprungs. Aber auch der Nachteil liegt auf der Hand, nämlich die schwierige Wartung.

Zusammenfassend lässt sich sagen, dass wir beim Springen zur Iframe-Seite je nach Situation unterschiedliche Implementierungsmethoden auswählen. Natürlich empfehlen wir im Vue-Framework die zweite Methode – die Verwendung des $router-Attributs zum Springen, und es ist auch möglich, sie über Iframes hinweg zu implementieren.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie einen aktualisierungsfreien Sprung zwischen zwei Iframe-Seiten in Vue. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn