• 高程8.2location对象 8.3navigator对象


    8.2location对象

    location对象既是window对象的属性,也是document对象的属性.

    window.location和document.location引用的是同一个对象.

    属性名 例子 说明
    hash “#contents” 返回URL中的hash(#号后跟零或多个字符),如果URL中不包含散列,则返回空字符串
    host “www.baidu.com:80” 返回服务器名称和端口号(如果有)
    hostname “www.baidu.com” 返回不带端口号折服务器名称
    href “http:/www.baidu.com” 返回当前加载页面的完整URL.而location对象的toString()方法也返回这个值
    pathname “WileyCDA” 返回URL中的目录和(或)文件名
    port “8080” 返回URL中指定的端口号.如果URL中不包含端口号,则这个属性返回空字符串
    protocol “http:” 返回页面使用的协议.通常是http:或https:
    search “?q=javascript” 返回URL的查询字符串.这个字符串以问号开头

    8.2.1 查询字符串参数

    location.search返回的是从问号开始(包括问号)到#号(不包括#号)之间的内容.

    function getQueryStringArgs(){
            var qs=(location.search.length>0?location.search.substring(1):""),
                //保存数据的对象
                args={},
                //取得每一项
                items=qs.length?qs.split("&"):[],
                item=null,
                name=null,
                value=null,
                //在for循环中使用
                i=0,
                len=items.length;
            //逐个将每一项添加到args对象中
            for(i=0;i<len;i++){
                item=items[i].split("=");
                name=decodeURIComponent(item[0]);
                value=decodeURIComponent(item[1]);
    
                if(name.length){
                    args[name]=value;
                }
            }
            return args;
        }

    8.2.2 位置操作

    使用assign()方法并为其传递一个URL

    location.assign(http://www.baidu.com);

    这样就立即打开新URL并在浏览器的历史记录中生成一条记录.下面两行代码与显示调用assign()方法一样

    window.location="http://www.baidu.com";
    
    location.href=http://www.baidu.com;

    可以通过将hash,search,hostname,pathname和port属性设置为新值来改变URL.

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

    https://www.baidu.com/?tn=92499072_hao_pg
    location.hash="#section1";//https://www.baidu.com/?tn=92499072_hao_pg#section1
    location.search="?q=javascript";//https://www.baidu.com/?q=javascript#section1(页面刷新)
    location.hostname="www.yahoo.com";//https://www.yahoo.com/?q=javascript#section1(页面刷新)
    location.pathname="mydir";//https://www.yahoo.com/?err=404&err_url=https%3a%2f%2fwww.yahoo.com%2fmydir%3fq%3djavascript(页面刷新)
    location.port="8080";//https://www.yahoo.com:8080/?err=404&err_url=https%3a%2f%2fwww.yahoo.com%2fmydir%3fq%3djavascript:1 GET https://www.yahoo.com:8080/?err=404&err_url=https%3a%2f%2fwww.yahoo.com%2fmydir%3fq%3djavascript net::ERR_CONNECTION_TIMED_OUT

    replace(),只接受一个参数,即要导航到的URL,结果会导致浏览器位置改变,但不会在历史记录中生成新记录.

    在调用replace()方法之后,用户不能回到前一个页面.

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script>
    
        </script>
    </head>
    <body>
        <p>Enjoy this page for a second,because you won't be coming back here.</p>
        <script type="text/javascript">
        setTimeout(function(){
            location.replace("http://www.baidu.com/");
        })
        </script>
    </body>
    </html>

    reload()方法,作用是重新加载当前显示的页面.如果调用reload()时不传递任何参数,页面应付以最有效的方式重新加载.

    如果页面自上次请求以来并没有改变过,页面就会从浏览器缓存中重新加载.

    如果要强制从服务器重新加载,则:

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

    8.3 navigator对象

    navigator对象是所有支持javascript的浏览器所共有的.

    与其他BOM对象的情况一样,每个浏览器中navigator对象都有一套自己的属性.

    下面列出了存在于所有浏览器中的属性和方法,以及支持它们的浏览器版本.

    属性或方法 说明 IE FF Safari/Chrome Opera
    appCodeName 浏览器的名称.通常都是Mozilla,即使在非Mozilla中也是如此 3.0+ 1.0+ 1.0+ 7.0+
    appMinorVersion 次版本信息 4.0+ - - 9.5+
    appName 完整的浏览器名称 3.0+ 1.0+ 1.0+ 7.0+
    appVersion 浏览器版本.一般不与实际的浏览器版本对应 3.0+ 1.0+ 1.0+ 7.0+
    buildID 浏览器编译版本 - 2.0+ - -
    cookieEnabled 表示cookie是否启用 4.0+ 1.0+ 1.0+ 7.0+
    cpuClass 客户端计算机中使用的CPU类型(X86,68K,Alpha,PPC或Other) 4.0+ - - -
    javaEnabled() 表示当前浏览器中是否启用java 4.0+ 1.0+ 1.0+ 7.0+
    language 浏览器的主语言 - 1.0+ 1.0+ 7.0+
    mimeTypes 在浏览器中注册的MIME类型数组   4.0+ 1.0+   -1.0+ 7.0+
    onLine 表示浏览器是否连接了因特网 4.0+ 1.0+   - 9.5+
    opsProfile 似乎早就不用了.查不到相关文档 4.0+   -   -   -
    oscpu 客户端计算机的操作系统或使用的CPU   -   1.0+   -   -
    platform 浏览器所有的系统平台   4.0+   1.0+   1.0+   7.0+
    plugins 浏览器中安装的插件信息的数组   4.0+    1.0+    1.0+   7.0+
    preference() 设置用户的首选项   -   1.5+   -   -
    product 产品名称(如Gecko)   -   1.0+   1.0+   -
    productSub 关于产品的次要信息(如Gecko的版本)   -   1.0+   1.0+   -
    registerContentHandler() 针对特定的MIME类型将一个站点注册为处理程序   -   2.0+   -   -
    registerProtocolHandler() 针对特定的协议将一个站点注册为处理程序   - 2.0+   -   -
    securityPolicy 已经废弃.安全策略的名称. - 1.0+ - -
    systemLanguage 操作系统的语言   4.0+ - - -
    taintEnabled() 已经废弃.表示是否允许变量被修改(taint)   4.0+ 1.0+ - 7.0+
    userAgent 浏览器的用户代理字符串   3.0+ 1.0+ 1.0+ 7.0+
    userLanguage 操作系统的默认语言   4.0+ -   - 7.0+
    userProfile 借以访问用户个人信息的对象   4.0+ -   - -
    vendor 浏览器的品牌 - 1.0+ 1.0+ -
    verdorSub 有关供应商的次要信息 - 1.0+ 1.0+ -
               

    8.3.1 检测插件

    对于非IE浏览器,可以使用plugins数组来检测浏览器虽是否安装特定插件.

    该数组中的每一项都包含下列属性:

    name:插件的名字.

    description:插件的描述.

    filename:插件的文件名

    length:插件所处理的MIME类型数量

    //检测插件(在IE中无效)
        function hasPlugin(name){
            name=name.toLowerCase();
            for( var i = 0; i < navigator.plugins.length;i++ ){
                if(navigator.plugins[i].name.toLowerCase().indexOf(name)>-1){
                    return true;
                }
            }
            return false;
        }
        //检测Flash
        console.log(hasPlugin("Flash"));
    
        //检测QuickTime
        console.log(hasPlugin("QuickTime"));

    每个插件对象本身也是一个MimeType对象的数组,这些对象可以通过方括号语法来访问.每个MimeType对象有4个属性:包含MIME类型描述的description,回指插件对象的enabledPlugin,表示与MIME类型对应的文件扩展名的字符串suffixes(以逗号分隔)和表示完整MIME类型字符串的type.

    //检测IE中的插件
        function hasIEPlugin(name){
            try{
                new ActiveXObject(name);
                return true;
            }catch(ex){
                return false;
            }
        }
    
        //检测Flash
        console.log(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));
    
        //检测QuickTime
        console.log(hasIEPlugin("QuickTime"));

    鉴于检测这两种插件的方法差别太大,因此典型的做法是针对每个插件分别创建检测函数.

    //检测所有浏览器中的Flash
    function hasFlash(){
        var result=hasPlugin("Flash");
        if(!result){
            result=hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
        }
        return result;
    }
    
    //检测所有浏览器中的QuickTime
    function hasQuickTime(){
        var result=hasPlugin("QuickTime");
        if(!result){
            result=hasIEPlugin("QuickTime.QuickTime");
        }
        return result;
    }
    
    //检测Flash
    console.log(hasFlash());
    
    //检测QuickTime
    console.log(hasQuickTime());

    plugins集合有一个名叫refresh()的方法,用于刷新plugins以反映最新安装的插件.这个方法接收一个参数:表示是否应该重新加载页面的一个布尔值.如果将这个值设置为true,则会重新加载包含插件的所有页面;否则,只更新plugins集合,不重新加载页面.

    8.3.2 注册处理程序

    FF2为navigator对象新增了registerContentHandler()和registerProtocoHandler()方法.

    registerContentHandler()方法接收三个参数:要处理的MIME类型,可以处理该MIME类型的页面的URL以及应用程序的名称.

    类似的调用方式也适用于registerProtocolHandler()方法,它也接收三个参数:要处理的协议,处理该协议的页面的URL和应用程序的名称.

  • 相关阅读:
    window10+python3.7安装tensorflow--gpu tensorflow 安装
    解决plsql中文显示问号(???)问题
    卷积神经网络通俗解读
    NLP进阶之(七)膨胀卷积神经网络
    如何用简单易懂的例子解释条件随机场(CRF)模型?它和HMM有什么区别?
    【Learning Notes】线性链条件随机场(CRF)原理及实现
    【机器学习】【条件随机场CRF-2】CRF的预测算法之维特比算法(viterbi alg) 详解 + 示例讲解 + Python实现
    条件随机场(CRF)
    条件随机场(CRF)
    条件随机场(CRF)
  • 原文地址:https://www.cnblogs.com/sunshinegirl-7/p/5014817.html
Copyright © 2020-2023  润新知