location对象

来源:互联网 发布:德国关税的算法 编辑:程序博客网 时间:2024/05/16 14:19
  • 一个完整的URL地址格式

    协议://主机:端口/路径名称#hash标识?搜索条件

  • location对象:既是window对象的属性,也是document对象的属性。window.location和document.location引用的是同一个对象。

  • 下面是location对象的所有属性(写成window.location. ;也能运行):

    //("#contents")返回url中的hash(#号后跟零或多个字符串),如果url中不包含散列,则返回空字符串    location.hash;      //("www.wrox.com:80")返回服务器名称及端口号(如果有)    loaction.host;     //("www.wrox.com")返回服务器名不带端口号    location.hostname;    //返回当前加载页面的完整url  而location对象的toString()方法也返回这个值    location.href;    window.location.toString();    //("/WileyCDA/") 返回url中的目录和(或)文件名    location.pathname;    //("8080")返回url中制定的端口号,如果url中不包含端口号,则这个属性返回空字符串    location.port;    //("http:")返回页面使用的协议,通常是http:或https:    location.protocol;    //("?q=javascript")返回URL的查询字符串。这个字符串以问号开头    location.search;
  • 位置操作:通过通过location对象来改变浏览器的位置。这些改变浏览器位置的方法中,最常用的是设置location.href属性
    //常用方式,打开新的url并在浏览器的历史记录中生成一条记录    location.assign('http://www.baidu.com');    //等同于上一行代码的功能    window.location = 'http://www.baidu.com';    location.href = 'http://www.baidu.com';
  • 更改当前的加载页面还有以下方法。通过将hash, search, hostname, pathname 和port 属性设置为新值来改变url
    //假设初始URL为http://www.baidu.com/WileyCDA/     //URL修改为"http://www.baidu.com/WileyCDA/#section1"     location.hash = '#section1';    //URL修改为"http://www.baidu.com/WileyCDA/?q=javascript"    location.search = '?q=javascript';    //URL修改为"http://www.yahoo.com/WileyCDA/"    location.hostname='www.yahoo.com';    //URL修改为"http://www.yahoo.com/mydir/"    location.pathname='mydir';    //URL修改为"http://www.yahoo.com:8080/WileyCDA/"    location.port=8080;

每次修改location的属性(hash除外),页面都会以新URL重新加载。

  • 可以通过replace()方法禁用后退按钮
//接收的参数为要导航到的url,不会在历史记录中生成新记录。调用replace()方法之后用户不能回到前一个页面,后退按钮处于禁用状态location.replace("http://www.wrox.com/");
  • reload()方法也是与位置有关。
    重新加载当前显示的页面,如果调用reload()时不传递参数,页面会以最有效的方式重新加载

    如果页面自上次请求以来并没有改变过,页面就会从浏览器缓存中重新加载,如果需要强制从服务器重新加载,则需要像下面这样为该方法传递参数true

    位于reload()调用之后的代码可能会也可能不会执行,这取决于网络延迟,或系统资源等因素。最好将reload()放在代码的最后一行。

//重新加载(有可能从缓存中加载)location.reload();//重新加载(从服务器重新加载)location.reload(true);
0 0