「Web AI」は、クロノス・クラウンの柳井政和が開発しているJavaScirptのライブラリです。
「Web AI」には、URLのクエリーを手軽に書き換えたり、文字列を圧縮したりする機能があります。この機能を使えば、URLのクエリーを圧縮して短くして、ページ読み込み時にそのデータを解凍したりができます。
それでは以下、「Web AI」のクエリーの操作と圧縮・解凍のサンプルを掲載します。
まずは、実例です。
文字列1(srcStr1=):以下、少し補足です。
クエリーからの文字列の取得には「get」と「getRaw」の2種類があります。
「get」はhtmlタグが自動でエスケープされるので、タグが入っている場合は文字列長が変わります。「getRaw」はhtmlタグをエスケープしないので文字列長は変わりません。
以下、ソースコードです。
// Googleからスクリプトをロード
google.load("search", "1");
google.load("feeds", "1");
google.load("jquery", "1.4.3");
// 初期化
google.setOnLoadCallback(function () {
prettyPrint(); // ソースの装飾(*説明装飾用)
});
/**
* @title 【テスト】
* @description
*
* テストを行う。
*/
function test() {
// 変数の初期化
var $WA = crocro.webAi; // 短縮表記
var cQ = new $WA.Query(); // クエリー
// 元文字列の長さを求める
var srcStr1 = $("#srcStr1").val();
var srcStr2 = $("#srcStr2").val();
$("#srcHanLen").html(getHanLen(srcStr1 + srcStr2));
$("#srcLen").html(getBytLen(srcStr1 + srcStr2));
// URLの作成
cQ.prsFrmUrl({url: "http://www.google.com/"});
//cQ.prsFrmLocation(); // 現在のURLをパースさせる場合
cQ.set("srcStr1", srcStr1);
cQ.set("srcStr2", srcStr2);
// 通常URL
var urlNrml = cQ.getUrl();
$("#urlNrml").val(urlNrml);
$("#urlNrmlLen").html(urlNrml.length);
// 圧縮URL
var urlCmprs = cQ.getCmprsUrl();
$("#urlCmprs").val(urlCmprs);
$("#urlCmprsLen").html(urlCmprs.length);
// 圧縮URLの復元
var cQR = new $WA.Query(); // クエリー
cQR.prsFrmUrl({url: urlCmprs});
var strDcmprs1 = cQR.get("srcStr1");
var strDcmprs2 = cQR.get("srcStr2");
$("#urlDcmprs1").val(strDcmprs1);
$("#urlDcmprs2").val(strDcmprs2);
$("#urlDcmprsLen").html(getHanLen(strDcmprs1 + strDcmprs2));
}
/**
* @title 【半角長取得】
* @description
*
* 文字列の半角での長さを取得。
*/
function getHanLen(s) {
var resN = 0;
for (var i = 0; i < s.length; i ++) {
resN += (encodeURIComponent(s.charAt(i)).length > 3) ? 2 : 1;
}
return resN;
}
/**
* @title 【バイト長取得】
* @description
*
* ユニコード文字列のバイトの長さを取得。
*/
function getBytLen(s) {
var resN = 0;
for (var i = 0; i < s.length; i ++) {
var enc = encodeURIComponent(s.charAt(i));
resN += (enc.length > 3) ? enc.length / 3 : 1;
}
return resN;
}