js基础 及BOM

        1.通常<script></script>放在head中,但是这样使页面加载迟缓,因此在web开发中经常将<script>标签放到<body>的最后,
        2.延迟脚本:html4.0为  <script>标签定义了defer属性,将脚本延迟到整个页面解析完成后再执行
                <script type="text/javascript" defer="defer" ></script>
             ps:很多浏览器不支持defer属性。
        3.ECMAScript会将那些小数点后带有6个零以上的浮点数转换为用e表示法的数值。
              永远不要某个特定的浮点数值。
              如: if(a+b=0.4) 是不可以的。
        4.NaN:1)任何涉及NaN的操作都会返回NaN;
                2)NaN和任何值不相等,包括NaN本身。
                3)函数isNaN(tom);注意boolean值可以被转换为数字 true ==  1 false == 0
                        因此isNaN(true);返回false


        5.javascript错误处理与调试
              I. javascript支持try-catch-finally用法,和在java中的用法相似。当捕捉多个异常时,使用如下格式
                try{ some statment}catch(error){
                        if(error instanceof ReferenceError){...}
                        else if(error instanceof TypeError){...}
                        else{...}
                } 
               II.抛出错误:抛出错误时务必给throw 操作符一个值,这个值是什么类型,没有要求。下列代码都是有效的
                     throw 123;
                     throw 'hello world'
                     throw {name:'javascript'}
                   在遇到throw操作符时,代码会立即停止执行,仅当有try-catch语句捕捉到抛出的值时,代码才会继续执行。
                通过使用某种内置的错误类型,可以更真实的模拟浏览器的错误。每种错误类型的构造函数接受一个参数,即实际的错误消息。
                如:throw new Error("something wrong!!!");
                   throw new TypeError("A TypeError happen!!");
            1)错误类型
                1.Error
                2.EvalError
                3.RangeError
                4.ReferenceError
                5.SyntaxError
                6.TypeError
                7.URIError
 
6.BOM
  1).使用下列代码可以跨浏览器取得窗口左边和上边的位置
        var leftPos = (typeof window.screenLeft == "number")?window.screenLeft : window.screenX;
        var topPos = (typeof windwo.screenTop == "number")?window.screenTop :window.screenY;
  2)window.open 弹出窗口屏蔽程序
        浏览器内置弹出窗口屏蔽程序,只要检查window是否等于null即可;如果是浏览器扩展或其他程序阻止的弹出窗口,那么window.open()通常会抛出一个错误,因此,要想准确地检测弹出窗口是否被屏蔽,必须在检测返回值的同时,将window.open()放到try-catch块中
        示例:
                var blocked = false;
                try{
                        var newWindow = window.open("zhidao.baidu.com","_blank","heigh=400;toobar=no");
                        if(newWindow == null)
                        {
                               blocked = true;
                        }
                }catch(ex)
                {
                         blocked = true;                        


                }
                alert("the newWindow has been blocked");
    3)超时调用
        var timeoutId = setTimeout(function(){
                alert("tomcat");
        },1000);
        setTimeout()会返回一个id,这个id是超时调用的唯一标示,可以用来取消超时调用。
        clearTimeout(timeoutId);
    4)间歇调用
        var intervalId = setInterval(function(){alert("lalala");},1000);
        取消间歇调用:clearInterval(intervalId);


      ps:一般认为,使用超时调用来模拟间歇调用是一种最佳模式。在开发环境下,很少真正使用间歇调用,原因是后一个间歇调用可能在前一个间歇调用完成前启动,而超时调用则可以避免这一点。
   5)系统对话框
        使用alert(),confirm(),prompt()等调用系统对话框向用户展示信息。
        这几个对话框都是同步和模拟的,也就是说,显示这些对话框时代码会停止执行,待关闭后代码又恢复执行。
    6)location
        一些属性:
        
通过location的上述属性改变URL,会在浏览器的历史记录中留一条新的记录,用户可以通过点击“后退”按钮返回的上一个页面,要禁止这种情况可以是用replace()方法。这个方法只接受一个参数,即要跳转到的URL。
        示例:location.repalce("http://zhidao.baidu.com");
 reload()方法,重新加载当前显示的页面。如果调用reload()方法时不传递任何参数,页面就会以最有效的方式重新加载。也就是说,如果页面自上次请求以来并没有改变过,页面就会从浏览器的缓存中重新加载。如果需要强制从服务器重新加载,则需要传递参数true;
        示例:
         location.reload();   //重新加载(有可能从缓存中加载)
        location.reload(true); //重新加载(强制从服务器加载)
  7)history 
        go()方法可以在用户的历史记录中任意跳转,这个方法接受一个参数,表示向后或向前跳转的页面数的一个整数值。负数表示向后跳转,正数表示向前跳转。
         history.go(-1);  
        history.go(3);
        也可以给go()方法一个字符串参数,此时浏览器会跳转到历史记录中包含该字符串的第一个位置,可能向前也可能向后,具体要看哪个位置离的近。如果历史记录中不包含该字符串,那么这个方法什么也不做。
        ps 1.两个简写方法:
                history.back();
                history.forward();
            2.history的length属性,保存历史记录的数量,这个数量包含所有的历史记录,即所有向前先后的记录。对于加载到窗口、标签页或框架中的第一个页面而言,history.lenth等于0.
                可以用来测试该属性的值,来确定用户是否一开始就打开了你的页面
                if(history.lenth != 0)
                {
                        alert("请将页面设为首页");
                }
                 http://zz563143188.iteye.com/
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值