<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/sunday_notebook/">
    <title>サンデープログラマの備忘録</title>
    <link>http://w.atwiki.jp/sunday_notebook/</link>
    <atom:link href="https://w.atwiki.jp/sunday_notebook/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>サンデープログラマの備忘録</description>

    <dc:language>ja</dc:language>
    <dc:date>2011-11-15T00:25:40+09:00</dc:date>
    <utime>1321284340</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/sunday_notebook/pages/41.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sunday_notebook/pages/43.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sunday_notebook/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sunday_notebook/pages/42.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sunday_notebook/pages/40.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sunday_notebook/pages/39.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sunday_notebook/pages/38.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sunday_notebook/pages/37.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sunday_notebook/pages/34.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sunday_notebook/pages/36.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/sunday_notebook/pages/41.html">
    <title>Javascript</title>
    <link>https://w.atwiki.jp/sunday_notebook/pages/41.html</link>
    <description>
      **メニュー
***tips
[[Javascriptのお作法]]
[[Eventの処理]]
***デザインパターン
[[シングルトンパターン]]    </description>
    <dc:date>2011-11-15T00:25:40+09:00</dc:date>
    <utime>1321284340</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sunday_notebook/pages/43.html">
    <title>シングルトンパターン</title>
    <link>https://w.atwiki.jp/sunday_notebook/pages/43.html</link>
    <description>
      [[Javascript]]でシングルトンパターンを実装する。
&gt;function Sample() {
&gt;
&gt;　　// キャッシュされたインスタンス
&gt;　　var instance = this;
&gt;
&gt;　　// プロパティの定義
&gt;　　this.hoge = 0;
&gt;　　this.fuga = &quot;test&quot;;
&gt;
&gt;　　// コンストラクタの書き換え
&gt;　　Sample = function() {
&gt;　　　　return instance;
&gt;　　};
&gt;}

元々のコンストラクタは初回のみ呼び出され、通常通りthisを返します。
２回目以降は書き換えられたコンストラクタが実行されます。
ただし、この実装では最初の定義から再定義の間にプロパティを追加すると、書き換えられたコンストラクタで追加したプロパティが失われます。
それを解決するのが以下の方法。

&gt;function Sample() {
&gt;
&gt;　　// キャッシュされたインスタンス
&gt;　　var instance;
&gt;
&gt;　　// コンストラクタを書き換える
&gt;　　Sample = function Sample() {
&gt;　　　　return instance;
&gt;　　};
&gt;
&gt;　　// プロトタイププロパティを引き継ぐ
&gt;　　Sample.prototype = this;
&gt;
&gt;　　// インスタンス
&gt;　　instance = new Sample();
&gt;
&gt;　　// コンストラクタのポインタを再設定
&gt;　　instance.constructor = Sample;
&gt;
&gt;　　// プロパティの定義
&gt;　　instance.hoge = 0;
&gt;　　instance.fuga = &quot;test&quot;;
&gt;
&gt;　　return instance;
&gt;}

これでよし。    </description>
    <dc:date>2011-11-15T00:24:34+09:00</dc:date>
    <utime>1321284274</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sunday_notebook/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/sunday_notebook/pages/2.html</link>
    <description>
      **メニュー
-[[トップページ]]
-Tool
--[[便利ツール]]
-開発
--[[Eclipse]]
--[[Android]]
--[[Ubuntu]]
--[[Javascript]]
--[[JQuery]]
-[[Link]]
**Wiki内検索
#search()

----
&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2011-01-18T01:59:10+09:00</dc:date>
    <utime>1295283550</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sunday_notebook/pages/42.html">
    <title>Eventの処理</title>
    <link>https://w.atwiki.jp/sunday_notebook/pages/42.html</link>
    <description>
      **ブラウザ上でEnter Keyを押された時の処理を制御するにはどうするの？
ブラウザ上で何かキーが押された時にはeventオブジェクトが生成されます。
このeventオブジェクトには様々なプロパティがあり、キーボードでのキーの動きやブラウザ上のマウスの動きを知らせてくれます。
ただし、キー操作に関するイベント属性は半角英数字の入力状態を対象とするらしく、日本語入力の場合はブラウザによって挙動が大きく異なるようです。
&gt;Opera…一切イベントが発生しない。
&gt;FireFox…最初の入力時に onkeydown属性と onkeypress属性のイベントが一度だけ発生し、入力内容の確定時に onkeypress属性が発生します。
&gt;IE…すべてのタイプに対して onkeydown属性と onkeyup属性が正確に毎回イベントを発生させるのですが、何故か onkeypress属性のイベントは一切発生しません。
&gt;Safari…Safari では最初の入力時に onkeydown属性と onkeypress属性のイベントが一度だけ発生し、onkeyup属性はすべてのタイプに対して正確に毎回イベントを発生させます。
参考サイト
[[onkeydown属性 onkeypress属性 onkeyup属性&gt;http://w3g.jp/xhtml/dic/onkeydown]]
[[eventオブジェクト（イベント情報の取得）&gt;http://f32.aaa.livedoor.jp/~azusa/?t=js&amp;p=event_object]]

さて、Enter Keyを押したことをどうやって知るのでしょうか？
それはKey Codeをみることでわかります。
&gt;function keyCode(e){
&gt;　　if(document.all)
&gt;　　　　return e.keyCode;
&gt;　　else if(document.getElementById)
&gt;　　　　return (e.keyCode)? e.keyCode: e.charCode;
&gt;　　else if(document.layers)
&gt;　　　　return e.which;
&gt;}
以上の様な方法でKey Codeを取得することができます。
ちなみに以下のサイトには各ブラウザでのKey Codeの一覧が載っています。
[[各ブラウザでキーコードを取得してみた&gt;http://www.programming-magic.com/file/20080205232140/keycode_table.html]]
さてリストを見るとEnterは13ですね。
そこで以下のように実装します。
&gt;function disable_enter(e) {
&gt;　　if (e.which == 13) {
&gt;　　　　return false;
&gt;　　}
&gt;　　return true;
&gt;}
&gt;
&gt;$(function() {
&gt;　　$(&#039;.noEnter&#039;).keypress(disable_enter);
&gt;});
これでEnterが無効になります。
参考サイト
[[サラッとjQueryプラグインを書けると(･∀･)ｲｲ!!感じ&gt;http://sakuratan.biz/archives/1597]]
上記サイトには上のソースを[[JQuery]]のプラグインにしたものがあります。
それも合わせて使ってみるといいかもしれませんね。    </description>
    <dc:date>2011-01-18T01:58:31+09:00</dc:date>
    <utime>1295283511</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sunday_notebook/pages/40.html">
    <title>Javascriptのお作法</title>
    <link>https://w.atwiki.jp/sunday_notebook/pages/40.html</link>
    <description>
      **javascriptにはtrim関数がないそうな。
スペースで空白になっている文字列をtrimしてバリデートしようと思ったら、javascriptにはtrim関数が用意されていないらしい。
ネットで調べるといろいろ勉強になりますね。
どうしてもtrimしたい場合はどうするか？
そこで正規表現の出番なんですね。
&gt;◯StringクラスにTrimメソッドの追加
&gt;String.prototype.trim = function() {
&gt;　　return this.replace(/^[ ]+|[ ]+$/g, &#039;&#039;);
&gt;}

**火狐は余計なことをしてくれてるらしい。
[[Javascript]]で次のように書いたとします。
&gt;var array = {&quot;A&quot;,&quot;B&quot;,&quot;C&quot;,}
このような場合、通常はエラーとなるはずなんですけど、火狐はそのまま何事もなかったかのように実行してしまうそうです。
そしてIEで実行したときにエラーが判明したりするわけですね。
なんでなんで？と探してみるもののこうしたミスはなかなか見つかりにくいものです。
実装時には気をつけて定義したいものです。

また一つ賢くなりました。    </description>
    <dc:date>2011-01-18T01:25:32+09:00</dc:date>
    <utime>1295281532</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sunday_notebook/pages/39.html">
    <title>JeeGooContext</title>
    <link>https://w.atwiki.jp/sunday_notebook/pages/39.html</link>
    <description>
      JeeGooContextは右クリックで表示するコンテキストメニューを独自実装するためのプラグインです。
これはわりとわかりやすいかもしれませんね。

***導入方法
公式サイトからダウンロードし解凍後、任意のフォルダにjquery.jeegoocontext.jsファイルかjquery.jeegoocontext.min.jsファイルを配置します。
また、同じフォルダ内にskinsフォルダも配置してください。
このフォルダ内のファイルを使って表示をしますので。
***実装例
HTMLのBody内にリスト構造で表示したいコンテキストメニューを作成します。


[[JQuery Plugin JeeGooContext&gt;http://www.planitworks.nl/en/jeegoocontext]]
実装は以下のサイトが参考になります。
[[独自の右クリックメニューを導入できるJavaScript「a jQuery context menu plugin」&gt;http://www.skuare.net/test/jeegoocontext.html]]    </description>
    <dc:date>2011-01-09T19:15:09+09:00</dc:date>
    <utime>1294568109</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sunday_notebook/pages/38.html">
    <title>JsTree</title>
    <link>https://w.atwiki.jp/sunday_notebook/pages/38.html</link>
    <description>
      JsTreeはフォルダ構造をツリー表示するためのプラグインです。
導入にはやはり手古摺りました。
なんせプロパティが多いものはその意味を知るのに苦労しますね。
***導入方法
公式サイトからダウンロードし解凍後、任意のフォルダにjquery.jstree.jsファイルを配置します。
また、同じフォルダ内にthemesフォルダも配置してください。
このフォルダ内のファイルを使って表示を切り替えますので。
***実装例
これは後ほど書きます。
主に設定するプロパティについてです。
***XMLデータフォーマット
以下の構造のXMLを読み込んでツリー表示にしてくれます。
&gt;&lt;root&gt;
&gt;　&lt;item id=&quot;oya1&quot;&gt;
&gt;　　&lt;content&gt;
&gt;　　　&lt;name&gt;親１&lt;/name&gt;
&gt;　　&lt;/content&gt;
&gt;　　&lt;item id=&quot;ko1&quot;&gt;
&gt;　　　&lt;content&gt;
&gt;　　　　&lt;name&gt;子&lt;/name&gt;
&gt;　　　&lt;/content&gt;
&gt;　　&lt;/item&gt;
&gt;　&lt;/item&gt;
&gt;　&lt;item id=&quot;oya2&quot;&gt;
&gt;　　&lt;content&gt;
&gt;　　　&lt;name&gt;親２&lt;/name&gt;
&gt;　　&lt;/content&gt;
&gt;　　&lt;item id=&quot;ko2&quot;&gt;
&gt;　　　&lt;content&gt;
&gt;　　　　&lt;name&gt;子２&lt;/name&gt;
&gt;　　　&lt;/content&gt;
&gt;　　　&lt;item id=&quot;mago1&quot;&gt;
&gt;　　　　&lt;content&gt;
&gt;　　　　　&lt;name&gt;孫１&lt;/name&gt;
&gt;　　　　&lt;/content&gt;
&gt;　　　&lt;/item&gt;
&gt;　　&lt;/item&gt;
&gt;　&lt;/item&gt;
&gt;&lt;/root&gt;

[[JsTree&gt;http://www.jstree.com/]]
実装例は以下を参考にしてください。
[[JsTree Documentation&gt;http://www.jstree.com/documentation]]    </description>
    <dc:date>2011-01-09T18:31:40+09:00</dc:date>
    <utime>1294565500</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sunday_notebook/pages/37.html">
    <title>JQGrid</title>
    <link>https://w.atwiki.jp/sunday_notebook/pages/37.html</link>
    <description>
      JQGridはデータテーブルとそれを操作する機能を盛り込んだプラグインです。
なかなかスタイリッシュなテーブルが作れます。
ただ、情報が少なくて導入から実装にはかなり手こずりました＞＜
一応、わかったところまでメモを残しておきたいと思います。
***導入方法
UIと同じく必要な機能を選択してダウンロードします。
そして任意のフォルダに以下の構成を参考に配置してください。
&gt;C:\jqGrid\
&gt;│
&gt;├─css
&gt;│  │  jquery-ui.custom.css　←これはJQuery-UIのものです。
&gt;│  │  ui.jqgrid.css
&gt;│  │
&gt;│  └─images
&gt;｜　　　(中身はJQuery-UIのものです)
&gt;│
&gt;└─js
&gt;　│　jquery.jqGrid.min.js
&gt;　│
&gt;　└─i18n
&gt;　　　grid.locale-jp.js

***実装例
ここは後ほど書きます。
主にプロパティの備忘録です。

***XMLデータフォーマット
こんな形式のデータを読み込んでくれます。
もちろんDBへアクセスして表示も出来ますが、とりあえずのプロトタイプとして使っています。
&gt;&lt;rows&gt;
&gt;　&lt;row id=&#039;id1&#039;&gt;
&gt;　　&lt;cell&gt;data1_1&lt;/cell&gt;
&gt;　　&lt;cell&gt;data1_2&lt;/cell&gt;
&gt;　　&lt;cell&gt;data1_3&lt;/cell&gt;
&gt;　　&lt;cell&gt;data1_4&lt;/cell&gt;
&gt;　　&lt;cell&gt;data1_5&lt;/cell&gt;
&gt;　&lt;/row&gt;
&gt;　&lt;row id=&#039;id2&#039;&gt;
&gt;　　&lt;cell&gt;data2_1&lt;/cell&gt;
&gt;　　&lt;cell&gt;data2_2&lt;/cell&gt;
&gt;　　&lt;cell&gt;data2_3&lt;/cell&gt;
&gt;　　&lt;cell&gt;data2_4&lt;/cell&gt;
&gt;　　&lt;cell&gt;data2_5&lt;/cell&gt;
&gt;　&lt;/row&gt;
&gt;&lt;/rows&gt;
***使用上の注意
薬じゃないですけどｗ
HTMLファイルには以下の記述を忘れないで下さい。
順番もお間違えなく。
この表記の順番を間違えただけでエラーに捕まってしまったのは内緒です＞＜
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; href=&quot;/js/jgrid/css/ui.jqgrid.css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/jgrid/js/i18n/grid.locale-(任意).js&quot;&gt;&lt;/script&gt; 
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/jgrid/js/jquery.jqGrid.min.js&quot;&gt;&lt;/script&gt;

それからJqGridはJQuery-UIのデザインを参照していますので、以下の記述も忘れずに。
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; href=&quot;(任意のパス)/jquery-ui.custom.css&quot; /&gt;

[[JQuery Grid Plugin&gt;http://www.trirand.com/blog/]]
実装はここを参考にしてください。
コードもいろいろのってます。
[[JqGrid Demos&gt;http://trirand.com/blog/jqgrid/jqgrid.html]]    </description>
    <dc:date>2011-01-09T17:32:39+09:00</dc:date>
    <utime>1294561959</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sunday_notebook/pages/34.html">
    <title>JQuery</title>
    <link>https://w.atwiki.jp/sunday_notebook/pages/34.html</link>
    <description>
      **メニュー
***導入方法
[[JQueryを使ってリッチなクライアントを簡単に作ってみる。]]
***プラグイン
[[JQuery-UIプロジェクト]]
[[JsTree]]
[[JQGrid]]
[[JeeGooContext]]    </description>
    <dc:date>2011-01-09T16:36:49+09:00</dc:date>
    <utime>1294558609</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sunday_notebook/pages/36.html">
    <title>JQuery-UIプロジェクト</title>
    <link>https://w.atwiki.jp/sunday_notebook/pages/36.html</link>
    <description>
      このプラグインはとても便利です。
例えばドラッグ＆ドロップやリサイズ機能、他にもダイアログ表示など。
その機能に関しては実際に公式サイトのデモを御覧ください。
それをみればすぐにでも使ってみたくなるはずです。
***導入方法
基本的には[[JQuery]].jsと同じです。
ダウンロードして任意のフォルダに配置してください。
ただ、このプラグインは多機能の為、必要な機能だけを選択することも可能です。
ダウンロードサイトで、必要な機能にチェックを入れてダウンロードを実行してみましょう。
もちろんいろいろ試してみたい場合は全部のせでもOKですね。
また、このプロジェクトの便利なところはUIデザインのテーマを選択出来ることです。
少しわかりづらいかもしれませんが、ダウンロードボタンの上の方にThemeという項目があります。
ここで、好きなThemeを選択してください。
それだけで、Zipファイルに必要なものをまとめてくれます。
さらに便利なことに、テーマをカスタマイズすることも出来るんです。
こんなに便利でいいんですかね？
ここで、UIのデザインを作成してダウンロードするだけで、自身のサイトに好みの機能を追加できるなんて。
ぜひお試しあれ。

[[JQuery UI&gt;http://jqueryui.com/]]    </description>
    <dc:date>2011-01-09T16:27:25+09:00</dc:date>
    <utime>1294558045</utime>
  </item>
  </rdf:RDF>
