zoukankan      html  css  js  c++  java
  • (一)HTML5

    可以解决什么问题:

    可以实现网页的ajax加载,同时又能完成URL的改变而没有网页跳转刷新的迹象,就像是改变了网页的hash(#)一样。

    优于hash:

    避免了改变hash的问题,避免了用户不理解URL的形式感到疑惑,同时还有onpopstate提供监听,良好响应后退前进。而且它不需要这个URL真实存在。

    HTML5 的 pushState+Ajax

    pushState() 的基本参数是:

    1 var state = ( {
    2 url: ~href, title: ~title, ~additionalKEY: ~additionalVALUE
    3 } );
    4 window.history.pushState(state, ~title, ~href);
    5 window.history.replaceState( state, ~title, ~href);    // 替换

    pushState、replaceState 的区别

    pushState()可以创建历史,可以配合popstate事件,而replaceState()则是替换掉当前的URL,不会产生历史。

    注:

    只能用同域的URL替换,例如你不能用http://baidu.com去替换http://google.com。

    state对象不存储不可序列化的对象如DOM。

    pushState 配合 popstate 监听

    1 window.addEventListener('popstate', function(evt){
    2     var state = evt.state;
    3     var tilte = state.tilte ;
    4     var url = state.url
    5     document.title=title;
    6     doSomething(url);  // 自定义函数
    7 }, false);

    popstate与hashChange

    对于http://www.abc.com/path?search=ghj#hashstring 这个url来说,

    ① http://为协议
    ② www.abc.com为host
    ③ path为path,也就是我们的子目录,每个子目录可以干很多事情
    ④ #hashstring为hash相关

    ①-③页面会刷新,④页面不刷新,

    pushState与改变hash 相同点:可以改变url地址

    pushState与改变hash 不同点:hashChange只能改变hashstring 部分,pushState可改变①-③而不刷新页面

    popstate 为1-3环节的变化引起的回调
    hashChange 为hash变化引起的回调,是不同的

    实例应用 - 劫持后退按钮

    (function(window, location) {
    history.replaceState(null, document.title, location.pathname+"#!/stealingyourhistory");
    history.pushState(null, document.title, location.pathname);
    window.addEventListener("popstate", function() {
    if(location.hash === "#!/stealingyourhistory") {
    history.replaceState(null, document.title, location.pathname);
    setTimeout(function(){
    location.replace("http://www.baidu.com/");
    },0); } }, false);  }(window, location));
  • 相关阅读:
    Django——Model
    正则表达式
    day03数据类型
    创建一个 Django 项目
    JAVA获取MYSQL数据库表、字段、字段类型、字段注释
    Django
    取splist的某个字段的值
    如何获取列表项的创建者的邮件地址
    使用 HTML 表单 Web 部件筛选并显示另一 Web 部件中的数据
    vs2010+Aspx进行sharepoint2010工作流开发(1)
  • 原文地址:https://www.cnblogs.com/huair_12/p/4173677.html
Copyright © 2011-2022 走看看