【问题标题】:Firefox Back button not working as expected: javascript displayed instead of htmlFirefox 后退按钮未按预期工作:显示 javascript 而不是 html
【发布时间】:2011-11-14 16:03:23
【问题描述】:

我正在使用 History.js 使我的 ajax 页面可收藏并获得预期的后退/前进浏览器按钮体验。在 Safari 中一切正常,但在 Firefox 6 中,如果我离开我的网站然后使用 hte 后退按钮返回,我会得到 javascript 而不是页面:

  1. 转到 mysite.com/user/1/post_board
  2. 点击帖子过滤器,地址更改为 mysite.com/user/1/post_board?filter=one
  3. 在地址栏中输入 google.com
  4. 按下返回按钮
  5. 我看到在第 2 步加载了 javascript

发生了什么?我做错了什么?

代码如下:

//  Bind to StateChange Event
    History.Adapter.bind(window,'statechange',function(e)
    {
        var state = History.getState();
        eval(state.data.function_rest + "("+JSON.stringify(state)+");");        
        History.log(state);
    });


$('.message_filter').bind('click', function() 
    {
        History.pushState({"function_rest":"restore_post_board_widget"}, document.title, this.href);
        return false
    });

function restore_post_board_widget(state)
{   
    $.getScript(state.url);
}

感谢您的帮助。

【问题讨论】:

  • 网址mysite.com/user/1/post_board?filter=one是否总是返回HTML?还是有时会返回 JavaScript?
  • @Shef:我愿意接受有关如何处理历史管理的建议。使用 eval 可以提供相当大的灵活性,但我还是 Javascript 的新手:stackoverflow.com/questions/7340906/…

标签: javascript firefox browser-history history.js


【解决方案1】:

只需添加:

window.onunload = 函数(){};

这就是我得到答案的地方:

After travelling back in Firefox history, JavaScript won't run

【讨论】:

  • 这是解决您问题的最差解决方案,它会降低浏览器性能。有关其他选项,请参阅 stackoverflow.com/questions/7194095/…
  • 感谢您指出这一点,但即使在阅读了您指出的问题之后,我也看不到任何其他选择。你能为我指出正确的方向吗?谢谢。
猜你喜欢
  • 2019-12-09
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
  • 1970-01-01
  • 2017-03-04
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多