如何防止将iframe页面插入IE浏览历史记录中

时间:2012-03-30 15:05:27

标签: internet-explorer iframe browser-history

我在将iframe页面插入IE9的浏览历史记录时遇到了很多麻烦。这很痛苦,因为你必须多次点击才能进入上一页。这是什么原因?这是浏览器或页面中的错误吗?

编辑: 我意识到我正在使用javascript来更新页面上所有iframe的源代码,以添加wmode = transparent属性。

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

这已添加到战斗菜单导航正在YouTube视频背后。有没有办法阻止IE将这些事件插入历史记录?

3 个答案:

答案 0 :(得分:7)

选项是替换iframe而不是更新源。

$('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);
});

只要iframe的src属性在插入DOM后被修改,就会生成历史记录条目。如果您无法控制iframe(第三方iframe)的内容,那么如果他们以任何方式修改其页面的位置,则会创建历史记录条目。

答案 1 :(得分:1)

我不知道所有的情况,但是在finance.yahoo.com上,有时会在后面的按钮历史记录中插入facebook的like.ph链接。它是由页面上的脚本引起的。当facebook链接在网页上可见时,就会发生这种情况。这会触发在后退按钮历史记录中创建链接的功能。用户无需点击任何内容即可实现此目的。

答案 2 :(得分:0)

而不是

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

DO

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