2012-03-30 11 views
2

Ich habe eine Menge Probleme mit Iframe-Seiten, die in den Browserverlauf von IE9 eingefügt werden. Es ist ein Problem, weil Sie mehrmals zurückklicken müssen, um zur vorherigen Seite zu gelangen. Was ist die Ursache dafür? Ist es ein Fehler im Browser oder auf der Seite?Verhindern, dass Iframe-Seiten in den IE-Browserverlauf eingefügt werden

Edit: Ich erkannte, dass ich Javascript verwendet, um die Quelle aller Iframes auf der Seite zu aktualisieren, um das Attribut wmode = transparent hinzuzufügen.

$('iframe').each(function() { 
    var url = $(this).attr("src") 
    $(this).attr("src", url + "?wmode=transparent"); 
}); 

Dies wurde hinzugefügt, um Menü-Navigationen bekämpfen wurden hinter YouTube-Videos gehen. Gibt es eine Möglichkeit zu verhindern, dass IE diese Ereignisse in den Verlauf einfügt?

Antwort

6

Eine Option wäre, die iframe zu ersetzen, anstatt die Quelle zu aktualisieren.

$('iframe').each(function() { 
    var url = $(this).attr("src") 
    //$(this).attr("src", url + "?wmode=transparent"); 

    url = url + "?wmode=transparent"; 

    var frm = document.createElement("iframe"); 
    frm.src = url; 
    //copy attributes of this -> frm 
    $(this).replaceWith(frm); 
}); 

A Historieneintrag wird jedes Mal, wenn ein iframe des gemacht Attribut src geändert wird, nachdem sie in den DOM eingefügt wurde. Wenn Sie nicht die Kontrolle über den Inhalt des Iframes (ein Iframe eines Drittanbieters) haben, wird ein Verlaufseintrag erstellt, wenn sie den Speicherort ihrer Seite auf irgendeine Weise ändern.

1

Ich weiß nicht über alle circustances, aber bei finance.yahoo.com ist manchmal ein Link zu Facebook like.ph in die Back-Taste Geschichte eingefügt. Es wird durch ein Skript auf der Seite verursacht. Es passiert, wenn der Facebook-Link auf der Webseite sichtbar wird. Das löst die Funktion aus, die die Verknüpfung in dem Back-Button-Verlauf erstellt. Der Benutzer muss nicht auf etwas klicken, um dies zu verursachen.

0

statt

$(this).attr("src", url + "?wmode=transparent"); 

tun

$(this).get(0).contentWindow.location.replace(url + "wmode=transparent"); 
+1

Ich glaube, das wird nur funktionieren, wenn der Iframe-Inhalt von der gleichen Domäne wie der Eltern ist. –

+0

@JoeEnzminger hast du recht. gleiche Domain, Port und Protokoll. Es gibt jedoch Korrekturen für die gleichen Richtlinienprobleme – YardenST

Verwandte Themen