代码之家  ›  专栏  ›  技术社区  ›  Mikhail

回到iframe的历史,但是改变了主窗口的地址

  •  1
  • Mikhail  · 技术社区  · 14 年前

    除了我需要的以外,我已经找到了处理一切的方法。下面是场景

    添加一个修改散列的通用逻辑会破坏一切。现在,当您回击时,浏览器会更改,但不会更改iframe历史记录。我试过访问那个特定iframe的历史 frames['myiframe'].history.back() 但这仍然会在不更改iframe源的情况下更改哈希。

    我发现了一个鬼鬼祟祟的家伙 history.replaceState(temp, '', iframelocation) 当单击链接时,这是无缝的,但是向后看,它实际上试图在主窗口中加载iframe位置。

    我不知所措。我知道GMail并不是每次你回击或转发时都会要求你提供所有的信息。那它是怎么做到的呢?它是否使用多个iframe,并更改哪个iframe可见?

    附笔。 测试了一个简单的情况:创建一个iframe,并通过一些 <a href="child" target="iframe">a 现在通过 location.href = 'something' 到现在为止,一直都还不错。现在,如果你明确告诉iframe回到历史上-它不会 frames['iframe'].contentWindow.history.back()

    3 回复  |  直到 14 年前
        1
  •  0
  •   CogitoErgoSum    14 年前

    我相信Gmail使用AJAX请求填充Div层。您应该考虑使用JQuery动态加载数据。还有一个jqueryhistory插件,它可以让您无缝地来回移动。 http://github.com/tkyk/jquery-history-plugin

        2
  •  0
  •   meder omuraliev    14 年前

    http://github.com/cowboy/jquery-bbq/raw/master/jquery.ba-bbq.js

    它会覆盖后退/前进按钮,并保留浏览器中的历史记录(如果需要的话)。

        3
  •  0
  •   Mikhail    14 年前

    我的最终解决方案是使用jquery的历史插件和div对象的javascript哈希数组。

    var hash; // populated with the value after #
    History[hash] = $('<div>').load(hash);
    

    祝你好运!