スポンサーリンク

javascript

JavaScriptの動かないコード (中級編) 重いページで,onloadのイベントリスナが実行されない

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分)やりたい事: サーバサイドで、画面上のフォーム内に、大量のhiddenデータを描画する。 描画が終わったら、自動的にフォームを送信(submit)する。 <body> ↓このフォ</body>…

システム開発で,「あればいいのに」と思う7つのもの

以下のものが,あればいいのに。 「レガシーJavaScript」に関する情報が完全に除去された,Google検索結果。 Windowsのウィンドウ部品を,jQueryのように操作できる,セレクタAPI。 COM経由で,マウスを自動操作するAPI。 「アプリケーションとしてのコマン…

JavaScriptでの例外設計 (throw,try-catch-finally構文のイメージと利用パターン)

JavaScriptプログラミングのTOPへ JavaScriptの例外(throw, try-catch-finally構文)の使い方について,以下の点を論じる。 (A)breakとreturnとthrowの比較 (B)throwを利用した設計のイメージ (C)throwの使いどころ (D)例外処理のサンプルコー…

JavaScriptで,クラスを継承する方法 (複数のサブクラスから共通クラスのプロトタイプを参照する)

JavaScriptプログラミングのTOPへ JavaScriptのコーディングでオブジェクトを扱う際,「インスタンスがちょっとずつ異なっている」という場合は,その自由度に見合ったクラス(=プロトタイプ)を1つだけ定義してやれば事足りる。 しかし,それに加えて「ク…

JavaScriptで,オブジェクトやクラスの初歩を理解しているか,実力を確かめるための7つの質問 (サンプルコード付き)

スキルチェックの目次へ JavaScriptはオブジェクト指向のスクリプト言語。オブジェクトやクラスの扱い方の基礎を理解していない場合,開発の戦力にならない。 JavaScriptの業務スキルレベル 判別表 (5段階) http://language-and-engineering.hatenablog.j…

JavaScriptの動かないコード (初級編) switch文で,数値以外の変数を評価した時のエラー

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分) やりたい事: 氏名を選択して,ボタンを押す。 ⇒氏名に対応する苗字と,苗字に対応するメッセージが表示される。 <body> 氏名を選んでください。 <select id="hoge"> <option>鈴木</option> <option>鈴木 太郎</option> <option>鈴</option></select></body>…

alert() と書くために,わざわざ行頭に戻らなくてもすむ方法

JavaScriptプログラミングのTOPへ JavaScriptで,文字列の内容を確認するためには alert( str ); のようなコードを書く。 しかし,本当は str.alert(); のような書き方をしたい。 そう思うのでは。 文字列(「str」とか 「"hoge"」 )を書いてから,そのあと…

ブラウザ上で,Officeのヘルプキャラクターを動かしてみよう (IE上でJavaScriptからMS Agentを呼び出す方法)

JavaScriptプログラミングのTOPへ Officeのヘルプキャラクタ(例えば「マーリン」とか,「カイル君」とか,「冴子先生」)を,ブラウザのHTML上で表示する。IE上だけでなく,WSHでバッチとしてデスクトップで呼び出す事も可能。 サンプル(IEで閲覧) http:/…

ブラウザ上でVB.NETのコードを動かす (IE上で.NETアプリケーションをホストする方法の続き)

以下の記事では,IE上で,C#のDLLを動かす方法を述べた。 今から3分で,IE 上で .NET のDLLを動かそう (ブラウザ上で C# のコードを動かす方法) http://language-and-engineering.hatenablog.jp/entry/20100705/p1 今回は,同じものをVB.NETでも作ってみ…

今から3分で,IE 上で .NET のDLLを動かそう (ブラウザ上で C# のコードを動かす方法)

今から3分で,Webページ上で,Microsoft .NET のコードを動かそう。JavaScriptにできない事も,.NETなら可能になる。 今回は,Windowsアプリ用のUI部品(カレンダー)を,Webページ上で使ってみる。 メモ帳さえあればよい。 Visual Studioは不要。 .NETの詳…

JavaScriptの業務スキルレベル 判別表 (5段階)

スキルチェックの目次へ JavaScript の簡易スキルチェックのための調査表。印刷用。 レベルは,0から4までの5段階。 (0) 非 JavaScript開発者 (1) 初学者(入門書を学習してゆく段階) (2) ノーマル(基礎的な知識があり,ある程度の動くものを…

Prototype.js + Script.aculo.us のはまり所

もはやレガシー*1となりつつある,時代を作ったJavaScriptフレームワーク Prototype.js の盲点,注意点を書きためてゆく。 ※「JavaScriptの動かないコード(JavaScriptエラー集)」のprototype.js版,という位置づけである。ただしネタは多くない。 Download P…

JavaScriptの動かないコード (中級編) ラジオボタンとプルダウンのonchangeイベントがおかしい

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分) やりたい事: ラジオボタンのチェック状態によって,表示文言を切り替える。 <input type="radio" name="msg_type" id="radio1">Aと表示<br> <input type="radio" name="msg_type" id="radio2">Bと表示<br> <br> <div id="div_msg1" style="display:none">A</div> <div id="div_msg2" style="display:none">B</div>

JavaScriptの動かないコード (中級編) イベント強制発生までの遅延時間をなくしたい

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分) やりたい事: 「フォーカスを外す(blur)とメッセージを表示する」という,テキストボックスがある。 このテキストボックスの動作テストをしたい。blurのイベ…

JavaScriptの動かないコード (中級編) clickイベントを強制的に発生させたい (fireEvent/createEventの使い方)

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分) やりたい事: 「クリックするとメッセージを表示する」という,テキストボックスがある。 このテキストボックスの動作テストをしたい。クリックのイベントを自…

JavaScriptの動かないコード (中級編) nullが0以上0以下と認識されてしまう

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分) やりたい事: ラジオボタンの中で,どれかボタンが選択されたかを検証する。 何も選択されていない場合,警告のメッセージを表示。 <body> どれか選択して下さい。<br> <input type="radio" name="hoge" value="0"> 0 <br></body>…

JavaScriptの動かないコード (中級編) innerHTMLを追記するとイベントハンドラが消える

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分) やりたい事: 「追加」ボタンを押すと,「メッセージ表示」ボタンが追加される。 どの「メッセージ表示」ボタンを押しても,メッセージが表示される。 <body> <input type="button" onclick="f()" value="ボタンを追加する"> <br> <div id="hoge"><input type="button" id="btn1" value="メッセージ表示"></div> <style type="text/css"> .bl</body>…

マウスでソートできるリストを作るためのJavaScriptライブラリ(行追加・削除・固定行の設定が可能)

JavaScriptプログラミングのTOPへ 下記のようなUIを実現するための,クロスブラウザなJavaScriptライブラリ。 マウスのドラッグドロップで,行を入れ替え可能。 行の追加・削除ができる。 リストの中に,ドラッグ不可能かつ順序不動の「固定行」を作れる。(…

UWSCでIEを自動操作し,回帰テスト/JavaScript実行/ファイル保存 などができるライブラリ

バッチ・マクロのTOPへ ※これより新しいバージョンがリリースされています。 http://language-and-engineering.hatenablog.jp/entry/20090826/p1 下記の「IEを自動操作するライブラリ」の改良版ができた。 UWSCで,IEを自動操作するためのライブラリ (ファ…

Selenium 中級者になろう (変数+XPath+JavaScriptを,テストケース中で利用する方法)

回帰テストツール「Selenium」の中級 Tips。 初級の使い方については 今から3分で selenium の使い方を身に付ける (回帰テスト自動化) http://language-and-engineering.hatenablog.jp/entry/20081016/1224080409 selenium 主なコマンド一覧 http://languag…

JavaScriptの動かないコード (中級編) IEでスコープチェインにdocumentが補完されるように見える不思議

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分) やりたい事: alertとかgetElementByIdなどの関数を,1文字の変数に代入して利用する。(つまり,ショートコーディングを試みる。) <html> <body> <input type="button" onclick="f()" value="1文字関数のテスト"> <div id="my_div">fuga</div> <script language="JavaScript"> function f(){ v</body></html>…

JavaScriptの動かないコード (中級編) オブジェクトのメソッドを変数代入でコピーできない

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分) やりたい事: hello,world! と,2回表示したい。その際,出力用の処理を簡単に呼び出せるように,関数を変数に代入してから利用する。 <html> <body> <input type="button" onclick="f()" value="「hello,world」と2回表示"> <script language="JavaScript"> function f(){ var </body></html>…

JavaScriptの動かないコード (中級編) setTimeoutのタイマーが指定時刻に動かないエラー (JavaScriptがマルチスレッドだという誤解)

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分) やりたい事: 0から20000までループする。 そのループの途中にタイマーを設定して,ループの進捗を表示する。 <input type="button" value="ループを開始する" onClick="f()"> <div id="div_counter"></div> <div id="div_comment"></div>

JavaScriptの単体テストフレームワーク "simpleJsUnit" で,テスト駆動開発をしよう

simpleJsUnitは,JavaScriptのコードを単体テストするためのライブラリ。 シンプルさが特徴。(たった5キロバイト) コマンドラインでも ブラウザ上でも テストを実行可能。 以下は,このツールを使って,テストファーストなJavaScript開発を進める方法。 …

JavaScriptで,グローバル変数の存在判定をする3つの方法 ("window"の定義状況を確認したい)

JavaScriptプログラミングのTOPへ JavaScriptで,グローバル変数が存在するかどうか判定するための3つの方法。 3つのうち1つはよく使う。残りの2つは,特殊な状況(WSHとの使い分けなど)で役立つ。

JavaScriptを,その場ですぐ実行するためのブックマークレット

JavaScriptプログラミングのTOPへ Web上で見つけたJavaScriptのコードを,その場ですぐに動かしてみたい時に。 javascript:(function(){var%20w=window.open('','w_code', 'width=280,height=220,resizable=no,scrollbars=no,status=no'); w.document.body.i…

JavaScriptの動かないコード (初級編) parseIntで返り値が0になるエラー

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分) やりたい事: 「2008年12月から何か月経ったか」を計算する。 <input type="button" value="期間を表示" onClick="f()"> 月を選択してください。 → 2009年の <select id="select_month"> <option value="01">01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option></select>

JScript.NET でのプログラミングを習得するための4ステップ (開発環境つき)

.NET Frameworkが入っていれば,JScriptで本格的なアプリケーション開発ができる。その名もJScript.NET。JavaScriptの知識を生かしながら,.NETプログラミングをする。 これを習得するために必要な,4つのステップを考えてみる。

テキストボックス内のカーソル(キャレット)位置や選択範囲を,JavaScriptで取得・設定する方法

JavaScriptプログラミングのTOPへ input や textarea などのテキストボックスをフォーカスした際に表示される,「|」の形をしたカーソルの事をキャレットという。また,Shiftキーを押しながらキャレットを移動させると,文字列が選択状態になる。 キャレッ…

JavaScriptの動かないコード (中級編) オブジェクトのプロパティ定義にthisを使って失敗するエラー

連載目次へ 以下のJavaScriptコードが意図した動作をしないのは,なぜですか。(制限時間1分) やりたい事: 文字列が改行やスペースを含むかどうか,正規表現で調べる。 <input type="button" value="クリックして表示" onClick="f()"> <script language="JavaScript"> // 文字列が特殊文字を含むかどうか判定するためのオブジェクト。 var obj = { /* …