2009-07-19 9 views
2

Ich versuche, einen Rahmen-buster-buster zu verwenden, wie sie in dieser Frage diskutiert: Frame Buster Buster ... buster code neededRahmen buster buster

Es funktioniert großartig an den Rahmen buster stoppen, leider stoppt auch eine Änderung der URL an alles - einschließlich Klicken auf Links oder Eingeben einer neuen Adresse in die Adressleiste.

Gibt es einen Weg um dies zu umgehen? Vielleicht indem Sie die Funktion window.onforeunload löschen, nachdem der Rahmen geladen wurde? Oder ein ganz anderer Ansatz?

+4

Das klingt wie böse Codierung! –

+2

Hah. Nichts Böses - es ist eine Symbolleiste, die Social-Media-Sites anzeigt. Myspace verwendet einen Framebuster. – zaius

+0

Wenn Myspace eine Beschränkung für Inhalte vorgenommen hat, würde ich annehmen, dass es ihnen nicht gefallen wird, wenn Sie eine Einschränkung "umgehen", die Sie kennen gelernt haben. Können Sie absolut sicher sein, dass die Einschränkungen der URL-Leiste unbeabsichtigt sind? –

Antwort

3

Dies ist, was ich am Ende ging. Es ignoriert nur die nächste Weiterleitung, nachdem die Seite geladen wurde. Der Hauptnachteil dieser Methode besteht darin, dass, wenn der Rahmen seinen Framebuster niemals aufruft (z. B. weil er nicht richtig lädt, oder die gerahmte Site ihren Code ändert), dies die nächste versuchte Seitenbewegung stoppt. Eine mögliche Lösung wäre, sie nach dem Laden der Frameseiten auszuführen, aber direkt bevor ein Skript ausgeführt wird. Eine andere Lösung wäre, URL-Änderungen nur an die Basis-URL des umrahmten Hosts abzufangen. Ich habe keine Ahnung, ob das möglich ist, obwohl ...

function ignore_next_redirect() { 
    var redirect_timer; 
    var prevent_bust = 0 
    window.onbeforeunload = function() { prevent_bust++; } 
    redirect_timer = setInterval(function() { 
    if (prevent_bust > 0) { 
     window.top.location = 'http://example.org/204' 
     window.onbeforeunload = function() {} 
     clearInterval(redirect_timer); 
    } 
    }, 1); 
} 

Es ist immer noch Probleme hat - es scheint Laden des Inhalts zu stoppen, wenn es am Anfang der Seite passiert.

Ich weiß, eine Lösung ist irgendwo da draußen - google Bilder scheinen es funktioniert zu haben. Wird mit jedem Fortschritt aktualisiert ...