2010年11月26日 18:00 [Edit]

javascript - ブログパーツ/ウィジェット開発者におねがい

たった二つです。

  1. 名前空間を一つだけ用意して、それのみを使うこと
  2. 設定はグローバル変数ではなく、引数渡しにすること

そうでないと、導入したサイトで変数衝突が起こる公算が大きくなります。


それが実際に発生したのが、右の画像です。表示がぐしゃぐしゃになっています。


問題を起こしたのは、以下のsnippetでした。

<script type="text/javascript" src="http://blogchart.jp/js/blogparts.js"></script>
<script type="text/javascript"><!--
id="22";blogurl="http://blog.livedoor.jp/dankogai/";partstype="b";viewBlogparts();
// --></script>

javascriptをロードして関数を一個実行するという、典型的なウィジェットのsnippetですが、idblogurltypeといういかにも衝突しそうなグローバル変数が三つも使われています。

これを例えば

jp.blogparts.show({id:22,blogurl:"http://blog.livedoor.jp/dankogai/",partstyle:"b"});

という風にすれば、このようなことはまず起こりません。

比較的最近のものは同様の配慮がなされているのですが、古いものはほいほいグローバル変数を使っていて、ときおりこうして問題が顕在化します。

それで名前空間をどうするかですが、これは java と同じく、ドメイン名をひっくり返すのが一番よいのではないかと思います。衝突回避という意味ではこれが一番確実で簡単なのではないかと。 javascript の世界ではほとんど普及していない習慣ではあるのですが…

各位ともよろしくお願いします。

Dan the Man with Too Many Widgets to Paste


この記事へのトラックバックURL

この記事へのトラックバック
今日も備忘録ブログパーツやウィジェットをはじめ、外部にJSを公開する時に、覚えておいた方がいいエントリーがあったのでメモ。1.名前空間を一つだけ用意して、それのみを使うこと2.設定はグローバル変数ではなく、引数渡しにすること via:javascript - ブログパーツ/ウィジ
[JavaScript][jQuery]外部公開する時の注意点【Bugle Diary】at 2012年11月26日 21:12
昨日は また 新横浜 河上選手のお誕生日会(*゚∀゚) 限定カクテル”紅”に舌鼓 て 小林さんが 完全に 主役を食ってもぉた 石川クンも弾けたーー そし ...
昼帰り【IP 野望篇】at 2010年11月28日 20:53
1. 名前空間を一つだけ用意して、それのみを使うこと 2. 設定はグローバル変数ではなく、引数渡しにすること http://blog.livedoor.jp/dankogai/archives/51554037.html こういったテクニックは入門系の書籍ではあまりみかけなかったと思うので少し落として具体的に。 あり
[JavaScript]名前空間を一つだけ用意する方法と引数渡しについて【三等兵】at 2010年11月27日 15:58
それが実際に発生したのが、右の画像です。表示がぐしゃぐしゃになっています。問題を起こしたのは、以下のsnippetでした。 http://blog.livedoor.jp/dankogai/archives/51554037.html
404 Blog Not Found:javascript - ブログパーツ/ウィジェット開発者におねがい【トラックバッカーズ】at 2010年11月27日 10:18