CSPとjQueryを組み合わせる
CSP with JQuery.
JavaScriptのライブラリの中でも最も人気があるjQueryですが、最近CSPと組み合わせることが多くなってきました。 CSPとjQueryを組み合わせることで、どのようなことが出来るのか紹介したいと思います。
jQueryとは?
JavaScriptのライブラリで
ブラウザによるJavaScriptの挙動の差異を隠蔽してくれる
DOM要素の指定が強力
CSSの操作が容易
AJAXライブラリを含む
拡張が容易
オープンソースかつフリー
という特徴があります。詳しくは 40分で覚える!jQuery速習講座 (http://ascii.jp/elem/000/000/498/498710/ )
jQuery日本語リファレンス(http://semooh.jp/jquery/ )
などを参照して下さい。
どのように使うか
jQueryのサイトからダウンロードしたライブラリ本体をWebサーバーに置いてCSPファイルから参照するのが基本的な方法ですが、一般的にはGoogle
C DN を使用することが多いと思います。 Google
CDNを使用する場合は、CSPソースコードの<head>〜</head>中に以下のように記述します。
< html >
< head >
<!-- Put your page Title
here --> < title >
Cache Server Page </ title >
< script
src = "//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js" ></ script >
</ head >
どのようなことが出来るか
このページの<a>タグでリンクされているurlを全て表示します
交互に背景色を設定してみます
ボタンを付けてみましょう
このような処理をjavascriptでコーディングするのは、かなり骨の折れる作業でしたが、jQueryによってかなり容易になりました。
ソースコードはこのようになっています。
function step1(){
$('#test').empty(); // id=testの中身を全部空にする
$('a').each(function(){ // ページ中の全てのaタグについて、以下を実行
var url=$(this).attr('href'); // href内を変数urlに格納
$('#test').append('<div>'+url+'</div>'); //id=testに取得したurlを<div>で囲んで追加
});
$('#step2').show('slow'); // id=step2を表示する
}
function step2(){
$('#test div:even').css('background-color','royalblue'); // id=testの中の偶数個目のdivについて、背景色を設定
$('#test div:odd').css('background-color','darkviolet'); // id=testの中の奇数個目のdivについて、背景色を設定
$('#step3').show('slow'); // id=step3を表示する
}
function step3(){
$('#test div').append('<input type=button class=Edit><input type=button class=Delete>');
// id=test の中の divそれぞれに ボタンを2つずつ追加
$('#test div input.Delete') // id=test の中の div の中の input のうち class=Deleteのものについて、
.attr('value','Delete') // value=Delete を設定 (ボタンにDeleteと表示)
.click(function(){ $(this).parent('div').remove(); }); // クリックされたらボタンを含むdivを空にする
$('#test div input.Edit') // id=test の中の div の中の input のうち class=Deleteのものについて、
.attr('value','Edit') // value=Edit を設定 (ボタンにEditち表示)
.click(function(){ // ボタンがクリックされたら
var str=prompt("適当に変更してみて",$(this).parent('div').text()); // 入力ダイアログを表示
$(this).parent('div').text(str); // 入力された内容を反映
});
}
特にブラウザ毎・バージョン毎の違いの多くをjQueryが吸収してくれるのが非常にありがたいです。
CSPとjQueryを組み合わせて、より使いやすいサイトを作っていきましょう。