デバッグするには
いつも読み込んでいるjavascripファイル「jquery.jqGrid.min.js」は、コメントやら不要なスペース、改行を全部削除して、できる限りファイルサイズを小さくしたファイルです。なので、別に暗号化されてるわけでは無いですが、このソースを追っていくのは不可能です。
そこで、jqGridの動作がどうなってるのか確認したり、alert 文を仕込んだりする際には、srcフォルダにあるjavascripファイルをロードすることになります。ただ、どうやってそのファイルをロードするのか、なのですが、どうやら前のバージョンまではそれ用のツールがあったらしいのですが、最新バージョン(3.5)ではなくなっておりました。残念。
でまぁ、どうやればいいか説明しようと思います。
フォルダ構成
例によって、c:\jqGrid 以下をサンプルに説明。
jqGrid をDLした時に、src フォルダがあるので、それをそのまま使用しますが、grid.loader.jsっていうファイル(後述)は新規作成する必要があります。
C:\jqGrid\
│
├─css
│ │ jquery-ui-1.7.2.custom.css
│ │
│ └─images
│ jquery-uiの画像ファイル
│ :
│ :
│
├─js
│ jquery-1.3.2.min.js
│ jquery.jqGrid.min.js
│ grid.loader.js <--------- ※※※
└─src
│ grid.base.js
│ grid.celledit.js
│ grid.common.js
│ grid.custom.js
│ grid.formedit.js
│ grid.import.js
│ grid.inlinedit.js
│ grid.postext.js
│ grid.setcolumns.js
│ grid.subgrid.js
│ grid.tbltogrid.js
│ grid.treegrid.js
│ jqDnR.js
│ jqModal.js
│ jquery.fmatter.js
│ jquery.searchFilter.js
│ JsonXml.js
│
├─css
│ jquery.searchFilter.css
│ ui.jqgrid.css
│
└─i18n
grid.locale-jp.js
grid.loader.js ファイルの中身
こんなカンジです。
// This file should be used if you want to debug function jqGridInclude() { // modify by shima var pathtojsfiles = "js/"; // need to be ajusted var pathtojsfiles = "src/"; // need to be ajusted // set include to false if you do not want some modules to be included var modules = [ // modify by shima { include: true, incfile:'i18n/grid.locale-en.js'}, // jqGrid translation { include: true, incfile:'i18n/grid.locale-jp.js'}, // jqGrid translation { include: true, incfile:'grid.base.js'}, // jqGrid base { include: true, incfile:'grid.common.js'}, // jqGrid common for editing { include: true, incfile:'grid.formedit.js'}, // jqGrid Form editing { include: true, incfile:'grid.inlinedit.js'}, // jqGrid inline editing { include: true, incfile:'grid.celledit.js'}, // jqGrid cell editing { include: true, incfile:'grid.subgrid.js'}, // jqGrid subgrid { include: true, incfile:'grid.treegrid.js'}, // jqGrid treegrid { include: true, incfile:'grid.custom.js'}, // jqGrid custom { include: true, incfile:'grid.postext.js'}, // jqGrid postext { include: true, incfile:'grid.tbltogrid.js'}, // jqGrid table to grid { include: true, incfile:'grid.setcolumns.js'}, // jqGrid setcolumns { include: true, incfile:'grid.import.js'}, // jqGrid import { include: true, incfile:'jquery.fmatter.js'}, // jqGrid formater { include: true, incfile:'JsonXml.js'}, // xmljson utils { include: true, incfile:'jquery.searchFilter.js'}, // search Plugin { include: true, incfile:'jqDnR.js'}, // drag & drop Plugin { include: true, incfile:'jqModal.js'}, // modal dialog Plugin ]; var filename; for(var i=0;i<modules.length; i++) { if(modules[i].include === true) { filename = pathtojsfiles+modules[i].incfile; if(jQuery.browser.safari) { jQuery.ajax({url:filename,dataType:'script', async:false, cache: true}); } else { IncludeJavaScript(filename); } } } function IncludeJavaScript(jsFile) { var oHead = document.getElementsByTagName('head')[0]; var oScript = document.createElement('script'); oScript.type = 'text/javascript'; oScript.charset = 'utf-8'; oScript.src = jsFile; oHead.appendChild(oScript); }; }; jqGridInclude();
ま、特に説明は不要ですね。
実際に使用するには
今まで script タグで読みこんでたところを修正します。こんなカンジです。
<head> : : <link rel="stylesheet" type="text/css" media="screen" href="css/jquery-ui-1.7.2.custom.css" /> <link rel="stylesheet" type="text/css" media="screen" href="src/css/ui.jqgrid.css" /> <link rel="stylesheet" type="text/css" media="screen" href="src/css/jquery.searchFilter.css" /> <script type="text/javascript" src="js/jquery-1.3.2.js"></script> <script type="text/javascript" src="js/grid.loader.js"></script> : : </head>
補足事項として、
- jqgrid で使用する css も解読可能なファイルがありますので、そちらを使用します。jquery.searchFilter.css も。
- jquery 本体のソースも解読可能なファイルがありますので、そちらを使用します。
これで alert 文をそこら中に埋め込んで解析できるぜ!