【问题标题】:use history.js to detect if HTML4 is supported so I can bypass ajax使用 history.js 来检测是否支持 HTML4,这样我就可以绕过 ajax
【发布时间】:2014-08-29 17:51:23
【问题描述】:

history.js 在我的网站上,在支持 HTML5 的浏览器中完美运行。单击 URL 时,它会执行 ajax 调用,并在完成时将状态保存到历史记录中。我使用函数 update_content() 淡入新内容。

在 HTML4 浏览器上,我只希望网站将 URL 视为普通 URL 并跳过 AJAX。我希望 history.js 有一个方法或函数可以调用来检测浏览器。伪代码如下。

$(document).on('click', 'a[data-type="content"]', function(event) {

    // pseudo code
    if(History.html4() ) { return; }

    event.preventDefault();

    var href = $(this).attr('href');

    $.get(href, function(data) { 

        var new_data = $(data).siblings('#main_wrapper').html();

        // update page with the new data!
        update_content(new_data);

        // add an item to the history log
        History.pushState({ html: new_data }, event.target.textContent, event.target.href);

    });

});

我只包含了 html5 history.js,所以它不会尝试将 # 放在 URL 中。

history.js 中是否有方法或函数可以用来检测当前浏览器是否为 HTML4 浏览器,所以我知道将链接视为正常?有没有更好的方法来做到这一点?

我不想安装像modernizr这样的插件,除非我必须这样做。

【问题讨论】:

  • 什么?您的实际问题并不完全清楚。
  • @sphanley 哎呀。清理完毕!
  • “知道重定向”是什么意思?你什么时候重定向,到哪里?
  • @sphanley 我添加了伪代码来帮助表示。如果是 HTML4 浏览器,则将链接视为普通链接。如果是 HTML5 浏览器,更新 pushstate 并淡入内容。

标签: javascript browser history.js html4


【解决方案1】:

不要测试浏览器是否支持 HTML 4:这是一个非常广泛的类别。

不要测试浏览器是否支持表单提交:他们都支持。

测试浏览器是否支持历史 API。

if (!history.pushState) {
    return;
}

【讨论】:

    【解决方案2】:

    您可以检查window.history 是否有pushState 方法

    if(!('pushState' in window.history)) {
        // doNothing();
        return;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-08
      • 2023-03-06
      • 2012-12-09
      • 1970-01-01
      • 2010-10-28
      • 2012-06-19
      • 2023-03-09
      • 1970-01-01
      相关资源
      最近更新 更多