<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 297,  comments - 1618,  trackbacks - 0
     

    說明:本文為《JavaScript高級程序設計》第5章學習筆記。

        本章探討如何把JavaScript嵌入HTML及其他語言,并介紹了BOM(瀏覽器對象模型)的一些基本概念。

    一.HTML中的JavaScript

    1. <script/>標簽

           最初定義的JavaScript標簽具有一個或兩個特性,language特性聲明要使用的腳本語言,src特性是可選的,聲明要加入頁面的外部JavaScript文件。language特性一般被設置為JavaScript,不過也可以用它聲明JavaScript的確切版本,例如JavaScript 1.3(如果省略,瀏覽器默認使用最新的JavaScript版本)。

           Eg1. <script language=”JavaScript”>

                         var i=0;

                  </script>

           Eg2. <script language=”JavaScript” src=”external.js”></script>

    2. 外部文件格式

           外部文件中為只包含JavaSript代碼的純文本文件。在外部文件中不需要<script/>標簽。

           Eg. <script language=”JavaScript” src=”external.js”></script>

           external.js的內容如下:

              function sayHello() {

             alert(“Hello!”);

    }

    3. 內嵌代碼和外部格式

           一般認為,大量的JavaScript不應內嵌到HTML文件中,原因如下:

    l         安全性——只要查看頁面的源代碼,任何人都可確切地知道其中的代碼做了什么。如果懷有惡意的開發者查看了源代碼,就可能發現系統漏洞,危及整個站點或應用程序的安全。此外,在外部文件中還可加入版權和其他知識產權通告,而不打算頁面流;

    l         代碼維護——如果JavaScript代碼散布于多個頁面,那么代碼維護將變成一場噩夢。

    l         緩存——瀏覽器會根據特定的設置緩存所有外部鏈接的JavaScript文件,這意味著如果兩個頁面使用同一個文件,只需要下載該文件一次。這將加快下載速度。把同一段代碼放入多個頁面中,不只浪費,還增加了頁面大小,從而增加下載時間。

    4.標簽放置

           一般放在<head/>中,這樣在顯示頁面主題后,這些代碼就被完全裝載進瀏覽器。唯一該出現在<body/>標簽中的代碼是調用前面定義的函數的代碼。

           Eg.

    <html>
                  
    <head>
                         
    <title>測試</title>
                         
    <script language="JavaScript">
                                
    function sayHi() {
           alert(
    "Hi");
    }

                         
    </script>
                  
    </head>
                  
    <body>
                         
    <input type="button" value="調用函數" onclick="sayHi()"/>
                  
    </body>
           
    </html>


    5. 隱藏還是不隱藏

           若要在不支持JavaScript的瀏覽器中隱藏<script/>的代碼。

           Eg.

    <script language="JavaScript">
                  
    <!
                         
    function sayHi() {
           alert(
    "Hi");
    }

                  
    //-->
                  </script>

    6<noscript/>標簽

           不支持JavaScript的瀏覽器另外一個令人關注的是如何提供替代的內容。隱藏代碼只是解決方法的一部分,開發者還需要一種方法,聲明在JavaScript不能用時應該顯示的內容。解決方法是采用<noscript/>標簽,它可包含任何HTML代碼(除<script/>)。支持或啟用JavaScript的瀏覽器會忽略這些HTML代碼,不支持的則顯示<noscript/>的內容。

    7XHTML中的改變

           近年來,隨著XHTML標準的出現,<script/>標簽也經歷了一些改變。它不再用language特性,而用type特性來聲明要加入的外部文件的mine類型。 

           Eg. <script type=”text/javascript” src=”external.js”></script>

    二.SVG中的JavaScript

           SVG是一種嶄露頭角的基于XML的語言,用于在Web上繪制矢量圖形。矢量圖形不同于光柵圖形(位圖),它們定義的是三角形、線段及它們之間的關系,而不只是定義圖像的每個像素的顏色。這樣生成的圖像無論大小,看起來都是相同的。隨著這種語言的日益流行,矢量圖形程序已經開始加入SVG導出功能。

    三.BOM

           BOM由一系列相關的對象構成,window對象是整個BOM的核心,所有對象的集合都以某種方式回接到window對象。

    1.       window對象

    window對象表示整個瀏覽器窗口,但不必表示其中包含的內容。此外,window還可用于移動或調整它表示的瀏覽器的大小,或者對它產生其他影響。

    Eg. 可用window.frames[0]window.frames[“topFrame”]來引用框架集合中的某個框架。

    1) 窗口操作

    moveBy(dx, dy)——把瀏覽器窗口相對當前位置水平移動dx個像素,垂直移動dy個像素。

    moveTo(x, y)——移動瀏覽器窗口,使它的左上角位于用戶屏幕的(x, y)處。

    resizeBy(dw, dh)——相對于瀏覽器窗口的當前大小,把窗口的寬度調整為dw個像素,高度調整為dh個像素。

    resizeTo(w, h)——把窗口的高度調整為w,高度調整為h。不能使用負數。

    1)      導航和打開窗口

    Eg. window.open(http://www.wrox.com/, “wroxwindow”, “height=150,width=300,top=10,left=10,resizable=yes”);

    2)      系統對話框

    Eg1. alert(“Hello world!”);

    Eg2. comfirm(“Are you sure?”);

    Eg3. propt(“What’s you name?”, “阿蜜果”);

    3)      狀態欄

    狀態欄為底部邊界內的區域,用于向用戶顯示信息。

    Eg1. window.defaultStatus = “You are surfing www.wrox.com.”;

    Eg2. window.status = “hello, 阿蜜果”;

    4)      時間間隔和暫停

           JavaScript支持暫停和時間間隔,這可有效地告訴瀏覽器應該何時執行某行代碼。所謂暫停,是在指定的毫秒數后執行指定的代碼。時間間隔是反復執行指定的代碼,每次執行之間指定的毫秒數。

           可以用window對象的setTimeout()方法設置暫停。該方法接受兩個參數,要執行的代碼和在執行它之前要等待的毫秒數。第一個參數可以是代碼串,也可以是函數指針。

           Eg1. setTimeout(“alert(‘Hello world!’)”, 1000);

           Eg2. setTimeout(function() {alert(“Hello world”);}, 1000);

           該函數返回一個數字暫停ID,與操作系統的進程ID相似。要取消還未執行的暫停,可調用clearTimeout()方法,并將暫停ID傳遞給它。如下:

           var iTimeoutId = setTimeout(“alert(‘Hello world!’)”, 1000);

           clearTimeout(iTimeoutId);

           時間間隔與暫停的運行方式相似,只是它無限次地每隔指定的時間段就重復一次指定的代碼。可調用setInterval()方法設置時間間隔,它的參數和setTimeout()相同,是要執行的代碼和每次執行之間等待的毫秒數。

           Eg1. setInterval(“alert(‘Hello world!’)”, 1000);

           Eg2. setInterval(function() {alert(“Hello world!”)}, 1000);

           此外,與setTimeout()類似,setInterval()方法也創建時間間隔ID,以標識要執行的代碼。ClearInterval()方法可用這個ID阻止再次執行該代碼。

           Eg. 

    var iNum = 0;
              
    var iMax = 100;
              
    var iIntervalId = null;
              
    function incNum() {
            iNum
    ++;
         
    if (iNum = iMax) {
           clearInterval(iIntervalId);
    }

    }

    iIntervalId 
    = setInterval(incNum, 500);

         這段代碼的功能是:每隔500ms,就對數字iNum進行一次增量運算,直到它達到最大值(iMax)。

    5)      歷史

    歷史是指訪問過的站點的列表。處于安全原因,所有導航只能通過歷史完成,不能得到瀏覽器歷史中包含的頁面的URL

    Eg1. 后退一頁:window.history.go(-1); 或者 history.go(-1); 或者history.back();

    Eg2. 前進一頁:history.go(1); 或者 history.forward();

    Eg3. 查看歷史中的頁面數:history.length;

    2.       document對象

    document對象實際上是window對象的屬性,因為window對象的任何屬性和方法都可直接訪問,所以下面代碼返回“true”:

    alert(window.document == document);

    該對象的獨特之處是它是唯一一個既屬于BOM又屬于DOM的對象。

    Eg1. 改變框架的標題:top.document.title = “新標題”;

    Eg2. 把窗口導航到新頁面:document.URL = “http://www.tkk7.com/amigoxie”;

    Eg3. document.links[0]訪問鏈接;

    Eg4. document.images[0]document.images[“imgHome”]訪問圖像;

    Eg5. document.forms[0]document.forms[“frmSubscribe”]訪問表單。

    Eg6. var oNewWin = window.open(“about:blank”, “newwindow”, “height=150, width=300, top=10, left=10, resizable=yes”);

        oNewWin.document.open();

       oNewWin.document.write(“<html><head><title>新窗口</title></head>”);

       oNewWin.document.write(“<body>新窗口內容</body></html>”);

       oNewWin.document.close();

    本例功能如下:打開空白頁,然后寫入新頁面,寫完后,調用close()方法完成顯示。

    3.       location對象

    BOM最有用的對象之一是location對象,它是window對象和document對象的屬性。location對象表示載入窗口的URL,此外,它還可以解析URL

    l         hash——如果URL包含#,該方法將返回該符號之后的內容;

    l         host——服務器的名字(eg. www.wrox.com);

    l         hostname——通常等于host,有時會省略前面的www

    l         href——當前載入的頁面的完整URL

    l         pathname——URL中主機后面的部分;

    l         port——URL中聲明的請求的端口,默認情況下,無端口信息;

    l         protocol——URL中使用的協議,即雙斜杠之前的部分;

    l         search——執行GET請求的URL中的問號后的部分。

    Eg1. location.href = “http://www.tkk7.com/amigoxie”;

    Eg2. location.assign(“http://www.tkk7.com/amigoxie”);

    如果不想要包含腳本的頁面能從瀏覽器中訪問,可使用replace()方法,該方法所做的操作與assign()方法一樣,但它多了一步操作,即從瀏覽器歷史中刪除包含腳本的頁面,這樣就不能通過瀏覽器的BackForward按鈕訪問它了。

    Eg3. location. Replace(“http://www.tkk7.com/amigoxie”);

    Eg4. 從服務器重載當前頁面:location.reload(true);

    Eg5. 從緩存中重載當前頁面:location.reload(false); 或者 location.reload();

    4.       navigator對象

    它是最早實現的BOM對象之一。它包含大量有關Web瀏覽器的消息。它也是window對象的屬性,可以用window.navigator引用它。

    它包括appNameappVersion等屬性。

    5.       screen對象

    雖然處于安全原因,有關用戶系統的大多數信息都被隱藏了,但還可以用screen對象獲取某些關于用戶屏幕的信息。

    屬性如下:

    l         availHeight——窗口可以使用的屏幕的高度(以像素計),其中包括操作系統元素需要的空間;

    l         availWidth——窗口可以使用的屏幕的狂賭(以像素計);

    l         colorDepth——用戶表示顏色的位數。大多數系統采用32位置;

    l         height——屏幕的高度(以像素計);

    l         width——屏幕的寬度(以像素計)。

    Eg. window.resizeTo(screen.availWidth, screen.availHeight);

    四.小結

           本章介紹了Web瀏覽器中的JavaScript,學到了BOM及它提供的各種對象。

    posted on 2007-08-31 17:40 阿蜜果 閱讀(1403) 評論(3)  編輯  收藏 所屬分類: Javascript


    FeedBack:
    # re: JavaScript學習筆記——瀏覽器中的JavaScript
    2007-09-03 17:40 | 紫楓凝瀟煙
    看這本書不如<javascript權威指南>  回復  更多評論
      
    # re: JavaScript學習筆記——瀏覽器中的JavaScript[未登錄]
    2007-09-04 14:56 | -274°C
    權威指南中午休息的時候我拿來做枕頭。權威指南是不錯,就是書太重了。  回復  更多評論
      
    # re: JavaScript學習筆記——瀏覽器中的JavaScript
    2007-09-05 16:52 | 楊愛友
    對,權威指南是在你開發中遇到問題查閱用的,不是學習用的,它就好比字典,或JAVA API,用來查閱。  回復  更多評論
      
    <2007年8月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

          生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
          我的作品:
          玩轉Axure RP  (2015年12月出版)
          

          Power Designer系統分析與建模實戰  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    關注blog

    積分與排名

    • 積分 - 2294296
    • 排名 - 3

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 91精品手机国产免费| 成人免费无码大片a毛片软件| 久久香蕉国产线看观看亚洲片| 免费国产黄网站在线观看 | 久久精品一区二区免费看| 亚洲国产美女在线观看 | 四虎最新永久免费视频| 在线观看亚洲专区| 亚洲日本中文字幕| 免费国产成人高清在线观看麻豆| 免费福利在线视频| 婷婷亚洲综合一区二区| 亚洲成人免费在线| 免费一级做a爰片久久毛片潮喷| 国产精品免费看久久久| 亚洲а∨精品天堂在线| 亚洲bt加勒比一区二区| 免费国产成人午夜私人影视| 最近新韩国日本免费观看| 一区二区在线视频免费观看| ass亚洲**毛茸茸pics| 亚洲国产综合无码一区| 国产美女无遮挡免费网站| **aaaaa毛片免费| 国产日韩在线视频免费播放| 亚洲狠狠成人综合网| 亚洲成熟xxxxx电影| 亚洲第一区精品观看| 久久久久久国产精品免费免费| 国产一级片免费看| 又大又硬又粗又黄的视频免费看| 色偷偷女男人的天堂亚洲网| 久久青青成人亚洲精品| 亚洲日韩VA无码中文字幕| 日韩电影免费在线| 日韩免费一区二区三区在线播放| 东方aⅴ免费观看久久av | 99热在线免费播放| 美女被免费网站91色| 青青久久精品国产免费看| 亚洲av午夜国产精品无码中文字|