Head First JavaScript_#4宠物改进版

点击:素材链接


素材解释:

{

  鼠标不点击宠物5秒(为了便于观察,所以设定的时间短)后,宠物狗会发呆。

}

这一次是对第一次做的宠物进行优化,当鼠标点击后的某一时间后,宠物会发生表情上的变化。

单次定时器:setTimeout(  ,   );有两个参数,第一个参数是要要执行的代码部分,第二个参数是延迟时间。
*间隔定时器:setInterval(   ,  );
*必以毫秒为指定定时器时限的单位,1毫秒为千分之一秒
*网页元素具有设定样式的style对象,width,height都是样式
*客户端窗口是浏览器窗口的一部分,只负责呈现网页,其他不关它的事
*你可以透过document对象的body.clientWidth与body.clientHeight特性,取得客户端窗口的宽与高。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>i-Rock</title>
<script type="text/javascript">
  function touchRock(){
  var userName = prompt("What is your name?","Enter your name here.");

   if(userName) {
     alert("It is good to meet you, " + userName + ".");
     document.getElementById("rockImg").src = "images/d_xingfen.png";
    }
    
}
setTimeout("document.getElementById('rockImg').src ='images/d_fadai.png';",2*60*1000);

</script>
</head>

<body onLoad="alert("Hello, I am your pet rock.");">
  <div style="margin-top:100px; text-align:center">
     <img id="rockImg" src="images/d_guaiqiao.png" alt="iRook" style="cursor:pointer" onclick="touchRock()" />
  </div>
</body>
</html>


onresize与onclick均由用户触发,但onload则不然。
onresize可以解决使iRock.html网页不只在网页首次载入时配合浏览器的客户端窗口而调整大小,还会在用户改变浏览器大小时一起修正。

---调整后的code---
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>i-Rock</title>
<script type="text/javascript">
var userName;
function greetUser(){
  alert("Hello, I am your pet rock.");    
}
  function touchRock(){
   if(userName) {
       alert("I like the  attention," + userName +".Thank you.");
       document.getElementById('rockImg').src ='images/d_tiaopi.png';
       
   }
   else{
        userName = prompt("What is your name?","Enter your name here.")
        if(userName){
            alert("It is good to meet you, " + userName + ".");
        }
    document.getElementById("rockImg").src = "images/d_xingfen.png";
   }    
   
   setTimeout("click_dog()",2*5*1000);
}
function click_dog(){
   document.getElementById('rockImg').src ='images/d_fadai.png';
    
}


function resizeRock(){
document.getElementById("rockImg").style.height=(document.body.clientHeight-50)*0.9;    

}

</script>
</head>

<body onLoad=" resizeRock();greetUser()"  onResize="resizeRock()">
  <div style="margin-top:100px; text-align:center">
     <img id="rockImg" src="images/d_guaiqiao.png" alt="iRook" style="cursor:pointer" onclick="touchRock()" />
  </div>
</body>
</html>


但是当重启浏览器或者电脑时候,宠物就会忘记它的主人。。。
cookie延长脚本的生命周期
利用cookie持久存储的网页数据:(用户ID,购物车内容,住址,语言)

我们在iRock遇到的问题,专有名词-持久性。
有时候,我们真的需要不会消失的数据。浏览器的cookie提供了持久地储存数据,让数据比脚本生命周期更长的方式。

还好有cookie指示指令。
读取,清楚cookie;
// JavaScript Document
//cookie3个协助函数

function writeCookie(name, value, days){
    
    var expires = "";
    if(days){
         var date = new Date();
         date.setTime(date.getTime()+(days * 24 * 60 * 60 *1000));
         expires = "; expires=" + date.toGMTString();
    }
    document.cookie = name + "=" +value + expires + "; path=/";
}

function readCookie(name){
    var searchName = name + "=";
    var cookies = document.cookie.split(';');
    for(var i=0;i < cookies.length; i++){
        var c = cookies[i];
        while(c.charAt(0) == ' ')
           c = c.substring(1,c.length);
         if(c.indexOf(searchName) == 0)
             return c.substring(searchName.length,c.length);
    }
    return null;
}

function earseCookie(name){
    writeCookie(name,"",-1);
}
    
*cookie影响浏览器的安全性
*cookie是一块文本数据,由用户计算机上的浏览器下令存储
*cookie让脚本存储的数据能存活超过单一网络session
*每个cookie都有有效日期,超过期限,浏览器随即清除cookie
*把脚本移动到外部文件,是个让程序更容易重复利用和维护的便利方式
*cookie不能访问用户的硬盘或散布病毒,但可以存储输入网页上的个人数据




猜你喜欢

转载自blog.csdn.net/lp15203883326/article/details/75547840