JavaScript in Web Browser

Slides:



Advertisements
Similar presentations
《计算机网络技术》 动态网页制作技术 常用HTML控件课程积件 杨 姝.
Advertisements

第六章 网页设计与制作基础.
第5章 HTML 標籤介紹.
佛山科学技术学院 第7章 HTML Internet及多媒体应用.
第8讲 HTML与PHP基础 静态网页 vs. 动态网页.
网页制作 第一讲
HTML概念 HTML(Hyper Text Markup Language 超文本标识语言) 是一种用来制作超文本文档的简单标记语言。
第12讲 Javascript 复习 信息学院 孙辉.
DREAMWEVAER MX 2004入门 楼斌 BBS ID:lou 生命科学学院
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
模块1 网页设计基础 实训1 体验HTML文档 1.1 网页基础知识 1.2 网站配色方案 1.3 网站设计常用软件
第一讲 JavaScript编程基础 信息学院 周宝刚.
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
第3章 JavaScript语言基础.
《网页设计与制作》 教学课件 主讲人:湖南铁道职业技术学院 陈承欢
14 JavaScript语言基础 JavaScript是一种轻量级、解释型的Web开发语言。所谓轻量级,就是语言的体系结构不是很庞杂,例如,没有C、Java等语言中的类、内存管理、系统管理等高深的知识范畴;所谓解释型,就是语言在浏览器或服务器等环境中直接被解释执行,不需要对源代码进行编译操作。
使用HTML製作個人網頁 柴惠敏 台灣大學 物理治療學系.
5.1 – 表格(FORM) 輸入元素 : 兩種傳遞方法 : GET or POST 範例 1. 文字欄位 Text box
CT212 (02/03)-Network Programming and design
第二章 網際網路網頁的設計.
HTML.
第3章 超文本标记语言(HTML) 3.1 基本结构标记 3.2 文本格式标记 3.3 超链接标记<A></A>
建國技術學院資訊管理學系 饒瑞佶 2004/7/5 彰化縣政府補助辦理網頁設計資料庫應用班 建國技術學院資訊管理學系 饒瑞佶 2004/7/5.
Google 自訂搜尋 淡江大學資訊中心 專案發展組 朱家璁 2009/10/6.
Hello World 體驗實作第一個JSP程式.
Ch1.認識全球資訊網 1.1 「網際網路」與「全球資訊網」 1.2 全球資訊網的基礎 – 網頁與超連結
教師: 陳明瑤 電郵: 網際網路應用-網頁設計3 教師: 陳明瑤 電郵:
标准规范 2.自己偏好习惯 3.讨论/建议 永远遵循同一套编码规范 -- 不管多少人同时参与编码,所有代码都应该看上去像是一个人编写的一样。
Chapter14 HTML簡介與簡易網頁製作
Beyond Technology JavaScript(Ver1.0).
Ch.13 HTML網頁實作.
張智星 台大資工系 多媒體檢索實驗室 第五章 自訂函數 張智星 台大資工系 多媒體檢索實驗室.
Image对象 主讲人:傅伟玉.
8 网页制作基础知识 赵国庆 博士 北京师范大学教育技术学院
JavaScript 语言3 学习网站:心蕊设计
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
類別(class) 類別class與物件object.
JavaScript 靜宜大學 資管系 楊子青.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
網頁切換移轉 JS vs. ASP.NET.
網頁切換移轉 JS vs. ASP.NET.
网 站 设 计 与 建 设 Website design and developments
表單(Form).
VS.NET 2003 IDE.
网页设计与制作教程第5版 机械工业出版社同名教材 配套电子教案.
HTML 103 互動式網頁.
Events & Event Handling
程式語言與邏輯 高慧君 台北市立南港高中 2006年12月22日.
第一個cordova project Cordova project建立與平台設定,均藉由cli(command line interface來完成 建立project請打開命令提示字元視窗應輸入下列命令 cordova create hello tw.edu.stust.mis.hello HelloWorld.
Ajax编程技术 第六章 调试与错误处理.
Ch09 在網頁之間傳遞資訊 網頁程式設計.
HTML – 超連結與圖片 資訊教育.
表單(Form).
表格(HTML – FORM).
JavaScript Sunxiaoshen.
UI 软件 设计 页面布局(一).
JavaScript 语言2 学习网站: 第 4 章 JavaScript 语言2 学习网站:
Prepared by : Au Kit Ming
HTML 103 互動式網頁 助教:黃毓瑩.
如何使用Gene Ontology 網址:
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
表格(HTML – FORM)
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
JQuery 標籤操作 建國科技大學 資管系 饒瑞佶 2013/4 V1.
從HTML表格到CSS 靜宜大學 資管系 楊子青.
Dreamweaver 進階網頁製作 B 許天彰.
Brief Guide of FrontPage
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
Presentation transcript:

JavaScript in Web Browser 靜宜大學資訊管理學系 蔡奇偉 副教授 2003

大綱 在網頁中加入 JavaScript 程式 window 全域物件 瀏覽器物件階層 網頁元件與物件的對應關係 使用名稱來存取網頁物件 存取網頁物件的屬性 事件的處理 插入網頁內容 alert() & confirm() 瀏覽器如何處理網頁程式?

在網頁中加入 JavaScript 程式 使用 script 標籤加入程式碼 <script> 的屬性 language & type src defer 用 JavaScript 運算式來設定元件的屬性值 JavaScript URL

使用 script 元件加入程式碼 <script> <!-- JavaScript statements //--> </script > JavaScript 程式碼裝在 HTML 註解中的原因,是為了讓不支援 JavaScript 的瀏覽器能跳過這些程式碼,而不致於造成網頁處理的錯誤。 //--> 最前面的兩個斜線是 JavaScript 的註解行符號。

<script> 的屬性 language= name_of_language 指定 script 元件中程式所使用的電腦程式語言種類或版本。 若未指定此屬性,則預設的電腦程式語言是 JavaScript。 HTML 4 規格書建議使用 type 屬性和 MIME 的格式來取代 language 屬性的設定,譬如: <script type=“text/javascript”>…</script> 此外,我們可以在 head 元件中用以下的標籤來設定網頁的的預設電腦程式語言: <meta http-equiv=“Content-Script-Type” content= “text/javascript”>

範例 以下三行都是加入 JavaScript 的程式碼 <script>……</script > <script language=“JAVASCRIPT”> ……</script > <script type=“text/javascript”> ……</script > 加入 JavaScript 1.3 版的程式碼 <script language=“JAVASCRIPT1.3”> ……</script > 加入 JScript 的程式碼 <script language=“JScript”> ……</script > 加入 VBScript 的程式碼 <script language=“VBScript”> ……</script >

src= url_of_script_source src 屬性用來加入存在外部檔案中的程式碼。JavaScript 程式檔通常以 .js 為副檔名。 插入與網頁同目錄的 JavaScript 程式檔 myscript.js <script src=“myscript.js”>…</script> 插入的 www.pu.edu.tw 伺服器中的 JavaScript 程式檔 lib.js <script src=“http://www.pu.edu.tw/lib.js”>…</script> 範例

使用外部 JavaScript 程式檔的好處 把大量的程式移到另外的檔案讓網頁的原始檔看起來比較清爽,也因此便利將來的網頁編修。 多個網頁可以很方便地共用相同的 JavaScript 程式。把這些相同功能的程式集中在一起也簡化了維護的工作。 當瀏覽使用相同外部 JavaScript 程式檔的多張網頁時,因為瀏覽器只需要下載這些程式檔一次,因此可以減少這些網頁下載所需的時間。 由於 src 屬性值是 URL,所以不同的 WWW 伺服器之間可以共享 JavaScript 程式。

由於程式碼不會插入網頁內容。瀏覽器因而不必等程式碼執行完成,就可以繼續處理後面的網頁內容。如此一來可以加速網頁的處理。 defer 屬性 由於 JavaScript 允許動態地插入網頁內容,因此瀏覽器碰到 JavaScript 程式碼時,必須先等它執行完後,才會繼續處理程式碼之後的網頁內容。但是,若一段 JavaScript 程式碼並不插入網頁內容,前述的瀏覽器等待動作就拖延了網頁的處理。基於這樣的緣故,HTML 4 增加 defer 屬性: <script defer> // 執行後不會插入網頁內容的程式碼 </script> 由於程式碼不會插入網頁內容。瀏覽器因而不必等程式碼執行完成,就可以繼續處理後面的網頁內容。如此一來可以加速網頁的處理。

用 JavaScript 運算式來設定元件的屬性值 (僅適用於 Netscape 4.x) attribute=“&{JavaScript Expression}” 範例 <script> <!-- var ruleWidth=100; //--> </script> …… <hr width=“&{ruleWidth+20}”> 等同於 <HR WIDTH=120>

JavaScript URL 我們可以用 javascript: 這個虛擬的 URL 通訊協定來加入 JavaScript 程式碼。當瀏覽器載入這樣的 URL 時,會執行其中的程式碼,然後把最後敘述所產生的字串顯示在新的畫面中,譬如底下的 URL 會產生一個顯示目前時間的網頁內容: javascript:var now = new Date(); “<h1>The time is:</h1>” + now.toLocaleString(); 若不希望離開目前的網頁,則最後一個敘述不可以產生任何的傳回值或只傳回 void 0。譬如: javascript:alert(“You are not a memeber”); javascript:window.open(“about:blank”); void 0; javascript:history.back();

window 全域物件 當瀏覽器載入網頁到視窗(或格框)時,內建的 JavaScript 執行器會先產生一個代表視窗(或格框)的全域物件,作為 JavaScript 程式碼與瀏覽器之間的溝通橋樑。在程式中,我們可以用 window 或 self 來指涉這個全域物件。window 物件具有底下的性質: 它作為瀏覽器物件階層的根結點(見後面的說明)。 把網頁中所有的全域變數納為它的屬性。 當使用它的屬性時,我們可以去掉前面的 window., 譬如底下兩行程式碼作用完全相同: var answer = 12; window.answer = 12;

瀏覽器物件階層 瀏覽器會依據網頁內容建立下圖所示的物件階層,供 JavaScript 程式碼使用: elements[] window document frames[] location history screen navigator forms[] links[] images[] applets[] embeds[] anchors[] elements[] 包含以下表單元件物件的陣列: Button Checkbox FileUpload Hidden Password Radio Select Submit Text Texrarea options[]

window:. the top-level object; has properties that apply to the entire window: the top-level object; has properties that apply to the entire window. Each “child window” in a frames document also has a window object. navigator: has properties for the name and version of Navigator being used, for the MIME types supported by the client, and for the plug-ins installed on the client. document: contains properties based on the content of the document, such as title, background color, links, and forms. location: has properties based on the current URL. history: contains properties representing URLs the client has previously requested. screen: contains properties about the display.

網頁元件與物件的對應關係 瀏覽器會把同類的網頁元件按照出現的順序存在對應的物件陣列中。譬如: <body> document.links[0] <body> <a href=www.pu.edu.tw>靜宜大學</a> <a href=www.cs.pu.edu.tw>靜宜大學資管系</a> </body> document.links[1]

<form method="post"> <p>姓名:<input type="text"> <body> <form method="post"> <p>姓名:<input type="text"> </p> <p>性別:<input type="radio" value=“male">男 <input type=“radio” value=“female”>女 <p> <input type="submit" value="送出"> <input type="reset" value="重設"> </form> </body> document.forms[0] document.forms[0].elements[0] document.forms[0].elements[1] document.forms[0].elements[2] document.forms[0].elements[3] document.forms[0].elements[4]

使用名稱來存取網頁物件 我們可以使用元件的名稱來存取其對應的網頁物件。HTML 元件的名稱可以用 NAME 屬性來設定。譬如: <body> <img name=img1...> <form name=form1...> <input type=text name=text1...> <input type=button name=button1...> ... </form> </body> document.img1 document.form1 document.form1.text1 document.form1.button1

任何擺在表單之中的物件,不管是否為表單元件,都必須加上表單物件來指定。譬如: <img name=img1...> <form name=form1...> <img name=img2...> ... </form> document.img1 document.form1.img2

存取網頁物件的屬性 我們使用前面所述的方式來指定網頁物件,然後再用 .property 來指定物件的屬性。譬如: document.form1.text1.value = "Hello" 把表單 form1 文字欄 text1 的 value 屬性設定成字串 "Hello"。

事件的處理 許多 JavaScript 程式屬於事件驅動(event-driven)的形式。 JavaScript 有下列幾種事件型態: 使用者操作引發的事件, 如:按下滑鼠鍵、改變文字欄裏 的內容、移動滑鼠游標通過超連結、…、等等 瀏覽器狀態改變所引發的事件,如:載入新網頁和離開網頁 計時器(Timer)引發的事件 錯誤( Error )引發的事件

<tag eventHandler="JavaScript Code"> 譬如: <IMG SRC=image.gif onabort="alert('Are you really too busy to wait?')"> 指定事件處理碼: 當瀏覽者藉由選取另一個超連結、按下「停止」按鈕、或其他的方式來放棄圖片的載入時。

插入網頁內容 document 物件提供底下兩個方法讓我們可以動態地插入網頁內容: document.write(string) document.writeln(string) // 輸出 string 後再加一個跳行字元 範例 底下的程式產生顯示 Hello, world! 訊息的網頁 <body> <script> document.write(“<h1>Hello, world!</h1>”); </script> </body>

範例 底下的程式產生顯示今天日期的網頁 <body> <script> var now = new Date(); document.write(“<p>Today is: ”); document.write(now.toLocaleDateString()); document.write(“</p>”); </script> </body>

<!-- 以下的程式碼產生九九乘法表 --> 範例 <!-- 以下的程式碼產生九九乘法表 --> <table border=1 cellspcing=1 cellpadding=3 width=450> <caption>九九乘法表</caption> <script> document.write("<tr align=right>") document.write("<th width=40 align=center>*</th>") for (var i = 1; i < 10; i++) document.write("<th width=40>" + i + "</th>") document.writeln("</tr>") for (var i = 1; i < 10; i++) { document.write("<th width=40 align=center>" + i + "</th>") for (var j = 1; j < 10; j++) document.write("<td width=40>" + i*j + "</td>") } </script> </table>

alert 語法: alert (message) Displays an Alert dialog box with a message and an OK button. 語法: alert (message) 範例 alert("這是限制級網站,未成年的訪客請離開")

confirm 語法: confirm (message) Displays a Confirm dialog box with the specified message and OK and Cancel buttons. 語法: confirm (message) 範例 confirm("你滿 18 歲了嗎?")

範例 <html> <head> <meta http-equiv="Content-Type“ content="text/html; charset=big5"> <title>禁忌話題</title> <script> function verify_visitor () { if (confirm("你滿 18 歲了嗎?")) location.href = "http://sex.pu.edu.tw" else location.href = "http://www.disneyland.com" } </script> </head> <body onLoad="verify_visitor()"> <!-- 空白網頁 --> </body> </html>

瀏覽器如何處理網頁程式? 1. 瀏覽器由上而下地依序處理網頁的元件「一遍」。 2. 瀏覽器也依序地執行 <script> 元件。 3. 在 <script> 元件中,瀏覽器依序地執行其中的敘述。 由於上述的處理順序,執行 JavaScript 程式碼時,不能存取目前尚未碰到的物件,譬如底下的兩行會造成網頁錯誤: <script>document.mylink.href=“http://www.pu.edu.tw”; </script> <a name=mylink>…</a> 因為在指定 document.mylink.href 時,mylink 這物件尚不存在。 4.

由於函式宣告只是定義函式,呼叫函式才真正執行它,所以上述的規則 4 並不適用於函式的宣告。譬如:底下的內容不會造成網頁錯誤: 5. <script> function set_mylink (url) { document.mylink.href=url; } </script> <a name=mylink>…</a> <script>set_mylink(“http://www.pu.edu.tw”); 5.

事件處理碼所指定的程式碼只有在對應的事件發生後才會被執行。譬如: 6. <script> function goto (place) { return confirm(“要連到“ + place + “嗎?”); } </script> <a href=“http://www.pu.edu.tw” onclick=“return goto(‘靜宜大學’);” >靜宜大學</a> 6. 只有在瀏覽者點了這個超連結之後才會執行這段程式

有時網頁延遲載入,當事件發生時,處理的程式碼所指涉的物件尚未建立,而造成網頁錯誤。譬如: <script> function show_time () { var now = new Date(); document.form1.elements.timebox.value = now.toLocaleTimeString(); } </script> <a href=“javascript:show_time(); void 0;”>更新時間</a> <script>for (k = 0; k < 100000000; k++) {}</script> <form name=form1> 目前時間:<input type=text name=timebox> </form> 按下此超連結時,瀏覽器可能還沒處理到表單 form1

JavaScript URL 中的程式碼只有在 URL 被瀏覽器載入後才會被執行。譬如: 7. <a href=“javascript:history.back();”>前一頁</a> 7. 只有在瀏覽者點了這個超連結之後才會執行這段程式