10. 作業

作業說明

一、說明

做兩個網頁,第一個網頁是一份表單,使用者輸入一些資料,然後將資料傳到第二個網頁顯示出來,給使用者做確認;然後第二個網頁可以讓使用者回前一頁去修改資料。

form.html 完成示意(有套用 CSS):

confirm.html 完成示意(沒有套用 CSS):

詳細說明請依照以下步驟製作開發。

二、前置

建立 html5/homework 資料夾,然後在該資料夾內,建立以下兩個檔案,檔名分別是 form.htmlconfirm.html

然後確認本機端網址可以連,例: http://127.0.0.1:5500/homework/form.html

也在作業資料夾下,建立 css/form.css

第一個網頁:form.html

步驟一、樣式、商品數量、清空資料按鈕

更新 form.html 檔:

form.html 檔,body 標籤內放以下原始碼:

完成以下:

1、樣式:form.html 頁面,載入 form.css 檔案。

2、商品數量:一進到頁面,商品數量的 span 標籤要顯示 1;拉動滑桿,商品數量的 span 標籤,要跟著連動。(滑桿需綁定事件:mousemovetouchmovetouchend或直接綁定 input 事件 )。

3、清空資料按鈕:針對 form 標籤,綁定 reset 事件,當 「清空資料」 按鈕,按下去之後,商品數量的 span 標籤,應回到 1。(註:span 標籤上有 data-default 屬性來表示預設值。)

步驟二、網頁畫面進入全螢幕模式

完成以下:

1、一進到頁面,「是否有支援全螢幕模式」 旁邊的藍色背景 span 標籤,要顯示 「」 或 「」。

2、「全螢幕按鈕」按下去,網頁要進入全螢幕模式,按鈕裡的文字要變成 「退出全螢幕模式」;如果按鈕再按一次,網頁要退出全螢幕模式,按鈕裡的文字要變成 「進入全螢幕模式」。

步驟三、使用 Geolocation 取得使用者位置經緯度

form.html 檔當中,加以下的 CSS:

完成以下:

1、一進到頁面,就抓取使用者的經緯度資料,若使用者同意,就將取得的經緯度資料,放到經緯度欄位。若使用者不同意,就將經緯度欄位加上 disabled 屬性。

2、一進到頁面,「是否有支援地理資訊定位」 旁邊的藍色背景 span 標籤,要顯示 「」 或 「」。

3、當使用者按下 「清空資料」 按鈕時,因為也會將經緯度欄位清空,所以要再次抓取經緯度,放回欄位上。

步驟四、使用 Drag and Drop 拖曳檔案

form.html 檔當中,加以下的 CSS:

提示:

  • drop 事件要加上 e.preventDefault(),才能夠允許取得檔案總管拖曳過來的檔案。

  • e.dataTransfer.files:可以取得從檔案總管拖曳過來的檔案(即 FileList)。

完成以下:

1、dragenter 事件觸發時,替 #preview 元素加 -on 這個 class;

dragleave 事件觸發以及 drop 事件觸發時,替 #preview 元素移除 -on 這個 class。

2、從自己電腦檔案總管,拖曳圖檔到頁面上的 「預覽圖」 區域,取得 FileList 物件,在 Console 中印出來看。

步驟五、透過 File 物件顯示預覽圖

從 「自己電腦」 拖曳圖片檔案,或點選 「預覽圖」 來選圖,都要呈現預覽圖。為簡化,做選一張圖就好。也就是 「預覽圖」 區域,僅顯示一張圖。

完成以下:

1、點擊 「預覽圖」 區域,跳出選圖的彈窗,然後將圖片在 「預覽圖」 區域呈現,圖片需加上 preview_img 這個 class,才不會太大張。

2、預覽圖顯示成功後,如果使用者再點擊選圖,然後按 「取消」,預覽圖區域需回到原介面。

3、從電腦的檔案總管,用拖曳的方式,也要能呈現預覽圖。結果同上。

4、按下 「清空資料」 按鈕,也要將「預覽圖」區域,回到原來的介面。

步驟六、使用 Session Storage 儲存資料

做到這邊,共有以下幾個資料可以取得,假設都是必填:

  • 商品名稱

  • 商品數量

  • 商品圖片(Base64)

  • 使用者位置經緯度

完成以下:

1、在按下 「送出資料」 按鈕時,將以上資料存到 Session Storage,並且將頁面導向到 confirm.html 頁面。

導向到 confirm.html 頁面的程式,可使用:

定義存資料到 Session Storage 的格式:

  • key 的名稱為:form_data

  • value 的格式為以下範例:

第二個網頁:confirm.html

步驟一、從 Session Storage 取得資料並顯示在頁面上

將 sessionStorage 的資料,顯示在 confirm.html 網頁上,只要能將資料放到頁面上即可,資料有:

  • 商品名稱

  • 商品數量

  • 位置資訊經度

  • 位置資訊緯度

  • 商品圖

步驟二、使用 Web Worker 計時

homework 資料夾內,建立 js 資料夾,然後在其內建立 worker_countdown.js 檔案。

使用 worker 來倒數計時 10 秒,10秒內要確認資料,若數完 10 秒,則畫面停住就不再計時;需在 10 秒內按下 「確認」 按鈕然後,結束 worker 的倒數計時。

步驟三、重填,使用 history 返回前頁

  • 接續上個步驟,倒數完 10 秒之後,返回前一頁重填資料;或按下 「重填」 按鈕,返回前一頁重填資料。

  • 返回前一頁時,需判斷 sessionStorage.getItem("form_data") 是否有資料,若有的話,需將資料填回到原本的表單。

  • 若按下 「清空資料」 按鈕,也需將 sessionStorage 裡的資料清空。

繳交方式

最晚繳交日期:0/(日) 晚上 12 點之前。

請將 homework 資料夾壓成壓縮檔,然後透過以下網址繳交:

前端班: https://frontend.tibame.com/

Java 班: https://java.tibame.com/

參考作法

Last updated