第7回 Javascript入門

Similar documents
第7回 Javascript入門

JavaScript 演習 2 1

Webデザイン論

第7回 Javascript入門

第 7 回の内容 動的な Web サイト フォーム Web システムの構成

Webプログラミング演習

JavaScript演習

メディプロ1 Javaサーブレット補足資料.ppt

Web データ管理 JavaScript (1) (4 章 ) 2011/12/7( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/21

医療者のための情報技術入門第 9 回プログラムがはたらくしくみを学ぶ (2) 日紫喜光良 概要 1. はじめに- 具体例から ここから Javascript のプログラミング入門 次はどうする--

PowerPoint プレゼンテーション

AJAXを使用した高い対話性を誇るポートレットの構築

コンテンツメディアプログラミング実習2

Webプログラミング演習

NetworkApplication-12

Microsoft PowerPoint _2b-DOM.pptx

Webデザイン論

演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用できます ) 演習名 使用するフォルダ 演習 1 Z: Web データ管理 演習

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Si 知識情報処理

第 8 回の内容 クライアントサイド処理 JavaScript の基礎

スライド タイトルなし

Web プログラミング 1 JavaScript (4) (4 章 ) 2013/7/17( 水 ) 日時 講義内容 4/10 ( 水 ) ガイダンス Web (1 章 ) 4/17 ( 水 ) HTML+CSS (1) (2 章 ) 4/24 ( 水 ) HTML+CSS (2) (2 章 ) 5

JC/400でポップアップウィンドウの制御&活用ノウハウ!

Microsoft Word - no06.doc

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

JavaScript演習

PowerPoint プレゼンテーション

SOC Report

1

JavaScriptプログラミング入門 2.JavaScriptの概要

第5回 マインクラフト・プログラミング入門

JavaScript¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç

Calendar Plus JavaScript API リファレンス ラジカルブリッジ Ver

SVG資料第10回目(その2) Ajaxによる同期通信と非同期通信の違い

19 ステップで 2 大人気スクリプト言語を学ぶ GUI のあるアプリを作る STEP11 から STEP12 までまとめ 1.Python での GUI アプリ作成 Python は標準ではグラフィックスの機能を持ちませんが ライブラリを使うことで GUI のアプリを作成することができる そこで

JavaScript 1.! DOM Ajax Shelley Powers,, JavaScript David Flanagan, JavaScript 2

PowerPoint プレゼンテーション

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

Microsoft PowerPoint - 04WWWとHTML.pptx

教材ドットコムオリジナル教材

2003年度 情報処理概論

4. Webブラウザのオブジェクト

untitled

e10s におけるプロセス間通信の基本 219 HACK #34 Components.manager.removeBootstrappedManifestLocati on() function shutdown(adata, areason) { const IOService =

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

情報システム設計論II ユーザインタフェース(1)

サンプル CSS web ページを開くと同時にピエロの玉乗りが動き出すアニメーションを作ってみましょう AnimeAuto の説明 HTML の記述 (AnimeAuto.html) ピエロの画像に pierrot という id を 玉の画像に ball という id を付けておきます <!DOCT

2017年COM実験_JavaScript演習資料

目次

情報システム設計論II ユーザインタフェース(1)

JavaScript プログラミング 4.Web ブラウザのオブジェクト 4-4 window オブジェクト 4-5 location オブジェクトと history オブジェクト 4-6 link オブジェクト 08T4082A 野太樹

携帯電話でGoogle Mapsを使う

overflow プロパティの指定は 親ボックスのスタイルに記述します overflow プロパティは position プロパティ (position: static; 以外 ) の指定がされていなと適用されません ボックスの外にはみ出た部分を表示させたくないときに hidden を使用します サ

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

情報システム設計論II ユーザインタフェース(1)

フォームとインナー HTML を使って動的にページ内の文章を変更しよう 問題 1. つぎの指示と画面を参考に HTML を組みなさい 仕様 テキストボックスに任意の文字を入力し [ コメント ] ボタンをクリックすると 下部の文章がテキストボックスの内容に置き換わる フォーム名 : f1 テキストボ

SOC Report

Microsoft Word 基_シラバス.doc

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

SmartBrowser_document_build30_update.pptx

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

intra-mart Accel Platform — 招待機能プログラミングガイド   初版  

10th Developer Camp - B5

JavaScript演習

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

5回目(JavaScript1)

Web データ管理 JavaScript (3) (4 章 ) 2011/12/21( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/18

PowerPoint プレゼンテーション

NetworkApplication-11

APIリファレンス

Sinatra と MongoDB 今回は Sinatra で MongoDB の操作を体験してみます 進捗に合わせて ドライバから Ruby で使える便利な ORM の紹介をします

NetworkApplication-09

Microsoft PowerPoint - prog03.ppt

paper.pdf

WEBシステムのセキュリティ技術

Web プログラミング 1 JavaScript (3) (4 章 ) 2013/7/3( 水 ) 日時 講義内容 4/10 ( 水 ) ガイダンス Web (1 章 ) 4/17 ( 水 ) HTML+CSS (1) (2 章 ) 4/24 ( 水 ) HTML+CSS (2) (2 章 ) 5/

今から始めるHTML5セキュリティ

07_経営論集2010 小松先生.indd

Microsoft Word - PHP演習資料.doc

情報システム設計論II ユーザインタフェース(1)

<48746D6C8AEE91628D758DC02E786C73>

Microsoft Word - JavaScript基礎講座Web Speech API.docx

デジタルテレビネットワーク機能 IC カードアクセス仕様書 デジタルテレビ情報化研究会 Copyright 2008 ALL RIGHTS RESERVED シャープ株式会社ソニー株式会社株式会社東芝株式会社日立製作所松下電器産業株式会社本仕様の内容は予告無しに変更されることがあります Docume

目次 1. 研究の背景と目的 1.1. 背景 1.2. 目的 2. 研究計画 3. 現状報告 3.1. 制作中の Web アプリケーション 使用する技術 概要 機能 課題 参考にしたサイト 書籍 3.2. その他の取り組み 4.

Microsoft Word - PaLearn_manual_05c.doc


( 前回 ) 提出課題 課題 1( 提出課題 ): データベースからデータを読み込み, そのデータを表示する Web ページ作成してみましょう user テーブルから書籍のデータを一覧表示する. 手順 1:PHP のファイルを user_list.php という名前で作業フォルダに作成する. プログ

Microsoft PowerPoint - ruby_instruction.ppt

スライド 1

( )

プレポスト【問題】

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Microsoft Word - VB.doc

ステップ 1:Cisco Spark にサインアップして試してみよう 1. Spark のホームページ ( で電子メールアドレスを入力し 指示に従って Spark アカウントを作成します 注 : 自身の電子メールアカウントにアクセスして Spar

Microsoft PowerPoint - Lecture_3

Microsoft PowerPoint - Lecture_2

forever朝活

ウェブデザイン技能検定学科試験 3 級 1. 各設問において 正しいものは 1 を 間違っているものは 2 を 該当設問の解答欄に記せ 第 1 問 head 要素は body 要素の前に記述する 第 2 問 アクセシビリティの観点から img 要素の alt 属性には何らかのテキストを入力することが

Transcription:

Slide URL https://vu5.sfc.keio.ac.jp/slide/ Web 情報システム構成法第 9 回 JavaScript 入門 (2) 萩野達也 (hagino@sfc.keio.ac.jp) 1

JavaScript 入門 ( 前回 ) オブジェクト指向について JavaScriptの誕生プロトタイプベースのオブジェクト指向 言語 構文および制御構造 代入条件文繰り返し関数 データ型 基本オブジェクト HTML への埋め込み <script> </script> Document Object Model 2

JavaScript の実行 読み込み時 <script> </script> は読み込み時に実行される. 関数などは定義されるだけなので, 実際の実行ではない. 変数の初期化なども行われる. イベント発生時 ボタンを押すなどのイベントが発生した時に, 指定されたプログラムが実行される. イベントハンドラ イベント処理を行うプログラム 前もってイベントごとに登録をしておく イベントは非同期に発生する. 3

同期入力と非同期入力 同期入力 プログラムが指定した時に入力を行う. 非同期入力 プログラムが別の処理中にも入力が発生する. 処理 入力待ち 通常処理 処理 入力の処理 イベントハンドラー入力の処理 4

JavaScript Event キーボード関係 keydown, keyup, keypress マウス関係 mouseover, mousedown, mouseup 要素関係 click, focus, input ウインドウ関係 resize, scroll 5

イベント処理 イベントハンドラ イベントが発生した時に行う処理を記述 HTML 要素の属性として指定 要素やオブジェクトに対してイベントハンドラを設定する HTML での指定 <button onclick=" イベントハンドラ "> ボタン </button> <p> どこでも <span onclick='window.alert("hello!")'> クリック </span> できる </p> JavaScript 内での指定 HTML 要素に関係ないものは, この方法でしか指定できない element.addeventlistener( イベント, 関数 ); document.getelementbyid('mybtn').addeventlistener('click', function(e){ document.getelementbyid('demo').textcontent = "Hello World!"; }); 設定したイベントハンドラには発生したイベントが渡される. 6

JavaScript の並列処理 JavaScript は基本的にシングルスレッドです. 同時に複数の処理を行わない. 変数をロックして保護するなどの必要はない. イベントはキューに貯められ, 一つづつ処理される. イベント処理 A イベント処理 B イベント処理 C メインスレッド イベントをキューに入れる 現在 次のイベントを取り出し実行 新イベント イベントキュー イベント C あるイベントの処理が重いと, 処理が滞る. WebWorkers を使ってバックグラウンドで処理を行うことも可能. マルチスレッドになる. WebWorkers に処理のためのメッセージを送り, 結果をイベントとして受け取る. WebWorkers は直接は DOM を操作することはできない. 7

タイマーの利用 一定時間後に何かの処理を行いたい settimeout でタイムアウトのイベント処理を指定 timer = settimeout( 関数, ms 時間 ); 1000ms 関数 settimeout( 関数, 1000); タイマーを止めるには cleartimeout(timer) 一定時間間隔で何かの処理を行いたい setinterval で一定間隔で実行する処理を指定 timer = setinterval( 関数, ms 時間 ); 1000ms 1000ms 1000ms setinterval( 関数, 1000); 関数 関数 関数 8 タイマーを止めるには clearinterval(timer)

setinterval の例 デジタル時計を作ってみよう <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>javascript Timer</title> </head> <body> <h1>javascript Clock</h1> <p id="clock"></p> <script> function showtime() { var element = document.getelementbyid('clock'); var now = new Date(); element.textcontent = now.gethours() + ':' + now.getminutes() + ':' + now.getseconds(); } showtime(); setinterval(showtime, 1000); </script> </body> </html> 9

Ajax Ajax = Asynchronous JavaScript + XML Web 2.0 で登場した. JavaScript と XML を使って非同期にサーバとの通信を行う. Web ページを取得する HTTP は基本的に同期的 ページを取得するリクエストをサーバに送り, 文書が返ってくるまで待つ 非同期的な処理を行いたい 最初に軽いページとして全体を受け取り, ユーザがブラウ視している間に徐々に中身を増やしていくユーザの要求に従って内容をサーバから取得するフォームの送信を行わずに, サーバにデータを送る 10

XMLHttpRequest オブジェクト JavaScript 内からhttpを使ってサーバにアクセスしデータを取得する var xhr = new XMLHttpRequest(); HTTP を行うオブジェクトの生成 xhr.onreadystatechange = function(){ if (this.readystate == 4 && this.status == 200) { xhr.responsetext にサーバから送られてきたデータが入っている } }; 送られてきたデータの処理 xhr.open("get", "URL", true); xhr.send(); リクエストを送る HTTP リクエストのメソッドと URI 非同期処理を指定 GET または POST メソッドを指定 11

GET と POST でのデータの受け渡し GET URL に問い合わせの形で追加する var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){... }; xhr.open("get", "http://.../chat.php?method=get&id=123"); xhr.send(); POST send でデータを渡すデータの形式を指定する必要がある GETと同じにするには application/x-www-form-urlencoded var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){... }; xhr.open("post", "http://.../chat.php"); xhr.setrequestheader("content-type", "application/x-www-form-urlencoded"); xhr.send("method=post&user=abc&message=hello%20world"); 12 URI に書くことのできる文字には制限があるため encodeuricomponent を使ってエンコードすると良い... + '&message=' + encodeuricomponent(m);

JSON サーバとクライアントでJavaScriptのオブジェクトをやり取りする場合には, JSON 形式を用いることが多い. JSON = JavaScript Object Notation JavaScript 以外でも利用できるようにJavaScriptのデータを表現したもの JavaScriptデータのシリアライズ JavaScript データ { name:"hagino", age:20, class:["web", "Haskell"] } JSON シリアライズ (stringify) デコード (parse) {"name":"hagino", "age:"20, "class":["web", "Haskell"]} x = JSON.stringify(obj); JavaScript のデータ obj を JSON としてシリアライズした文字列を返す obj = JSON.parse(x); JSON 文字列をデコードして JavaScript のデータを返す 13

チャットを作ってみよう 複数人がメッセージを書き込み, それを共有できるチャットのアプリケーションを作ってみましょう. チャットサーバ チャットメッセージの管理 メッセージの書き込み メッセージの読み出し 14

チャットサーバ API チャットサーバ URL http://web.sfc.keio.ac.jp/~hagino/wis/chat.php メッセージの書き込み 引数 method=post user= ユーザ名 message= メッセージ 戻り値 (JSON) { id: メッセージ番号 } chat.php メッセージの読み出し 引数 method=get id= メッセージ番号 戻り値 (JSON) 与えられたメッセージ番号より大きなメッセージ番号を持つメッセージの中で, 最もメッセージ番号が小さいものを返す { id: メッセージ番号, user: ユーザ名, message: メッセージ } 15

課題 : チャットのクライアントを作成しなさい チャットサーバの API を使って, チャットを行うクライアントを作成しなさい. chat.php が動作しない場合は,chat.php と chatserver.php をコピーし, サーバ名とポート番号を変更し, 自分の環境で動作させてください. CSS を使ってスタイルをカスタマイズしなさい. 提出 https://vu5.sfc.keio.ac.jp/kadai/ HTML(JavaScript) を提出 JavaScriptはHTMLに埋め込むこと 締め切り : 6 月 17 日正午 16 chat.html 例 <!DOCTYPE html> <html>... <body> <header><h1> チャット </h1></header> <article> <form> <div> <label> 氏名 : <input type="text" id="u"></label> <label> メッセージ : <input type="text" id="m"></label> <input type="submit" value=" 書き込む " onclick="sendmessage();return false;"> </div> </form> <div id="c"></div> <script> function sendmessage() {... } function getmessage(id) {... } getmessage(0); </script> </article> </body> </html>

サンプル chat.html メッセージの書き込み 氏名とメッセージを入力できるformを用意 書き込み ボタンでsendMessageを呼び出す formの本来のsubmitを抑制するためにreturn falseとする sendmessage 関数 form の入力テキストを取り出し,method=post として chat.php に送る メッセージの読み出し getmessageによりサーバからメッセージを受け取る getmessage 関数 method=getとしてchat.phpに送る idは自分が受け取っている最新のメッセージの番号を与える idの初期値は0で始める 受け取ったメッセージをHTMLの適当なところに挿入する 次のメッセージを受け取るために, 再帰的にgetMessageを呼び出す 17

まとめ JavaScript の続き 同期処理と非同期処理 イベント タイマー XMLHttpRequest 18