zoukankan      html  css  js  c++  java
  • Js之Location对象

    Window对象的location属性引用的是Location对象,它表示该窗口中当前显示的文档的URL,并定义了方法来使窗口载入新的文档。Document对象的location属性也引用到Location对象:window.location === document.location 返回true
    Document对象也有一个URL属性,是文档首次载入后保存该文档的URL的静态字符串。如果定位到文档中的片段标识符(如#table-of-c ontents),Location对象会做相应的更新,而document.URL属性却不会改变。

    Window对象的location属性引用的是Location对象,它表示该窗口中当前显示的文档的URL。Location对象的href属性是一个字符串,后者包含URL的完整文本。Location对象的toString()方法返回href属性的值,因此在会隐式调用toString()的情况下,可以使
    用location代替location.href。这个对象的其他属性-protocolhosthostnameportpathnamesearch,分别表示URL的各个部分。它们称为“URL分解”属性,同时被Link对象(通过HTML文档中的<a>和<area>元素创建)支持。

    • location.hostname 返回 web 主机的域名
    • location.pathname 返回当前页面的路径和文件名
    • location.port 返回 web 主机的端口 (80 或 443)
    • location.protocol 返回所使用的 web 协议(http:// 或 https://)
    • location.href 属性返回当前页面的 URL。
    • location.assign() 方法加载新的文档。

    Location对象的hashsearch属性比较有趣。如果有的话,hash属性返回URL中的“片段标识符”部分。search属性也类似,它返回的是问号之后的URL,这部分通常是某种类型的查询字符串。一般来说,这部分内容是用来参数化URL并在其中嵌入参数的。
    虽然这些参数通常用于运行在服务器上的脚本,但在启用JavaScript的页面中当然也可以使用它们。

    例14-2:提取URL的搜索字符串中的参数
    /率
    十这个函数用来解析来自URL的查询串中的name=value参数对
    +它将name=value对存储在一个对象的属性中,并返回该对象
    +这样来使用它
    +  var args=urlArgs();//从URL中解析参数
    +  var q=args.q || ””;//如果参数定义了的话就使用参数}否则使用一个默认值
    +var n=args.n ? parselnt(args.n):1O,
    +/
    function urlArgs(){
        var args={);    //定义一个空对象
        var query=location.search.substring(1);  //查找到查询串,并去掉‘?’
        var pairs=query.split(”&”);    //根据”&”符号将查询字符串分隔开
        for(var i:o;i<pairs.length; i++){    //对于每个片段
        var pos=pairs[i].indexof(‘=’);    /,查找”name=value”
        if (pos==-i) continue;    //如果没有找到的话,就跳过
        var name=pairs[i].substring(o,pos),  ll提取name
        var value=pairs[i].substring(pos+1); ll提取value
        value=decodeURIComponent(value);    //对value进行解码
        args[name]=value;    //存储为属性
        )
        return args;    //返回解析后的参数
    )

    Location对象的assign()方法可以使窗口载入并显示你指定的URL中的文档。replace()方法也类似,但它在载入新文档之前会从浏览历史中把当前文档删除。如果脚本无条件地载入一个新文档,replace()方法可能是比assgin()方法更好的选择。否则, “后退”
    按钮会把浏览器带回到原始文档,而相同的脚本则会再次载入新文档。如果检测到用户的浏览器不支持某些特性来显示功能齐全的版本,可以用location.replace()来载入静态的HTML版本。
    //如果洳览器不支持XMLHttpRequest对象
    //则将其置定向到一个不需要Ajax的静态页面

    if (IXMLHttpRequest) location.replace(”staticpage.html”);

    注意,在这个例子中传人replace()的是一个相对URL。相对URL是相对于当前页面所在的目录来解析的,就像将它们用于一个超链接中。除了assgin()和replace0方法,Location对象还定义了reload()方法,后者可以让浏览器重新载入当前文档。

    使浏览器跳转到新页面的一种更传统的方法是直接把新的URL赋给location属性:

    location=“http://www.oreilly.com”;//在此网站购买书!


    还可以把相对URL赋给location,它们会相对当前URL进行解析:

    location=”page2.html”; //载入下一个页面


    纯粹的片段标识符是相对URL的一种类型,它不会让浏览器载入新文档,但只会使它滚动到文档的某个位置。#top标识符是个特殊的例子:如果文档中没有元素的ID是“top”,它会让浏览器跳到文档开始处。

    location=“#top”; //跳转到文档的顶部


    Location对象的URL分解属性是可写的,对它们重新赋值会改变URL的位置,并且导致浏览器载入一个新的文档(如果改变的是hash属性,则在当前文档中进行跳转):

    location.search = ”?page=”+(pagenum+i);//载入下一个页面
  • 相关阅读:
    bzoj4537: [Hnoi2016]最小公倍数
    bzoj4331: JSOI2012 越狱老虎桥
    bzoj4558: [JLoi2016]方
    bzoj4209: 西瓜王
    bzoj2653: middle
    bzoj4671: 异或图
    bzoj4771: 七彩树
    shell java应用启动脚本(app.sh)
    Springboot 构建http服务,返回的http行是'HTTP/1.1 200' 无状态码描述 客户端解析错误
    MariaDB(Mysql)-主从搭建
  • 原文地址:https://www.cnblogs.com/agindage/p/4693775.html
Copyright © 2011-2022 走看看