Weblog

JavaScriptファイルに引数を渡す

Posted at 2006-08-07T12:46:00+09:00 in Coding

前回のエントリで触れたscript要素のsrc属性に指定したJavaScriptファイルに引数を渡す方法。ネタ元はscript.aculo.usで、script.aculo.usでは読み込むライブラリを指定するために使っている模様。引数が指定できるというのは夢が拡がる(った)。

asamashi.jsでは以下のようなコードで引数に指定したASINコードを取得している。

$A(document.getElementsByTagName("script")).findAll(function(s) {
  return (s.src && s.src.match(/asamashi\.js(\#.*)?$/))
}).each(function(s) {
  asin = s.src.replace(/http:\/\/hail2u\.net\/pub\/test\/056_asamashi\.js\#/, '');
});

$A()findAll()などprototype.jsを利用したコードなので短くまとまっている。

var ss1 = document.getElementsByTagName("script");
var ss2 = new Array();

for (var i = 0; i < ss1.length; i++) {
  var s = ss1[i];
  if (s.src && s.src.match(/asamashi\.js(\#.*)?$/)) ss2.push(s);
}

for (var i = 0; i < ss2.length; i++) {
  var s = ss2[i];
  asin = s.src.replace(/http:\/\/labs\.hail2u\.net\/amazon\/asamashi\/asamashi\.js\#/, '');
}

普通に書くとこんな感じ(あんまりチェックしてないので多分)。つまりscript要素を列挙して、src属性をチェック。自分自身への参照でかつ引数があれば配列に格納し、正規表現の置換で引数をゲットというわけ。

実際には、

<script type="text/javascript">
  var asin = "4844322222";
</script>
<script type="text/javascript" src="asamashi.js"></script>
<div id="asamashi-4844322222"></div>

などという形(Google AdSenseなんかみたいなスタイル)で良いことが多い(と思う)。そのためこういった引数を与えるというテクニックは使う場所が限られそう。もちろんscript.aculo.usのような動的ロードの仕組みなどはその限られた場所のひとつで、大いに力を発揮するだろう。前回のエントリでやったような仕組みを汎用的にし、第三者に積極的に利用してもらう場合にも良いアプローチだと思う。上記のようなコードよりも、

<script type="text/javascript"
  src="http://hail2u.net/pub/test/056_asamashi.js#4844322222"></script>
<div id="asamashi-4844322222"></div>

の方がすっきりしてて気持ちが良いし、利用する第三者に優しいと思うので。コーダー的なメリット(アプリケーションにおいて引数を渡すことができるというメリット)よりも、ユーザー的なメリット(JavaScriptファイルの呼び出しが簡略化できたりするメリット)という面でポイントが高いテクニックかなとかいう印象。

例えばGoogle AdSenseが、

<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js#pub-8712792805045949:Seaside">
</script>

という感じだったとしたらすっきりしてて良くない?みたいな。

Recent entries from same category

同じカテゴリに分類された最近10件のエントリです。

  1. JSONフィードとか何とか #2
  2. 設定を外部JavaScriptファイルから読み込む
  3. del.icio.usのnetworkをツリー状に展開しまくる
  4. XPIパッケージにまとめるバッチ・スクリプト
  5. Yahoo! Search Web ServicesのJSON(P)を利用したサイト内検索
  6. Google AJAX Search APIのJSONPを利用したサイト内検索
  7. JSONPに同期リクエスト
  8. インバウンド・リンクのリスト
  9. はてなブックマークエントリー情報取得APIははてなスクリーンショットAPI(でもある)
  10. prototype.jsの開発メモとGecko DOM ReferenceのHTMLヘルプ

Comments

JavaScriptに対応または有効な環境の場合、ここにはてなブックマークでのこのエントリに対するコメントが表示されます。

Weblog archives

by Category

This page was last modified on 2006-08-22T19:23:58+09:00 (in 0.098 secs).