6月 01
ブログパーツや、ウィジェット(Widgets)やガジェット(Gadgets)の作成方法について、仕事で扱うかも知れないので、調べてみました。
そのメモ。
*
ブログパーツはまだいいのですが、ガジェット(≒ウィジェット)は動作するプラットフォーム(Windows Vista/7, iGoogle, Google デスクトップ, etc…)がたくさんあり、それぞれに向けた作り込みが必要なようです。
ブログパーツも、サイズという観点から見れば、やはり何パターンか作る必要があると言えるでしょう。
作り方の方針
さて、今回は、自社の既存コンテンツが使えるように、ブログ側からは JavaScript コードを貼り付けてサーバの JavaScript を読み込み、読み込まれた JavaScript 内で外部の既存コンテンツ(PHP など)を呼び出すように作ってみました。
「ブログ内の script タグ」 → 「サーバの JavaScript」 → 「サーバのプログラム」
しかも、「サーバの JavaScript」からは「document.write(‘<iframe…/>’)」でコンテンツを表示してます。
※手抜きっぽいですが、一般的に良く使われる手法でもあるようです
実装
具体的なコードですが、ざっくりと次の様なコードになりました。
■ ブログ内の script タグ
<script language="JavaScript" type="text/javascript" src="http://dhive.jp/services/widgets
/QuantitySurvey.js" charaset="utf-8"></script>
■ サーバの JavaScript
document.write('<iframe src="http://dhive.jp/services/widgets/QuantitySurvey.php" frameborder="0" framespacing="0" scrolling="no" height="NNN" width="NNN" marginwidth="0" marginheight="0" style="margin:0;padding:0;"></iframe>');
■ サーバのプログラム
ふつーの PHP プログラムなので割愛。
HTML を通常通り出力すれば、動作します。
縦横の出力サイズだけ気をつけましょう。
まとめ
今回の方法であれば、ビジネスロジックはすべて自社などのサーバに集約でき、プレゼンテーション部分だけホスト側に合わせて作れば良いので、無駄が少ないかと思っています。
デスクトップ ガジェットなども、今後作ってみたいですね。
10月 09
最初に断っておくと、私は JavaScript が嫌いである。
厳密には、JavaScript を自分で記述するのが嫌いである。
開発において、想定しづらいほど多い複数の環境に対して動作を保証するのは困難だから、と言うのが正直なところ。
だから、できる限りカプセル化したライブラリを用い、なるべく自分で記述はしないようにとしています。
これも一つの品質に対する考えだと思うのです。
*
さて、そうは言ってもテキストボックスのクリアぐらいは書くのもしょうがないと思っていたら、くだらないミスをしてしまったので忘れないように自戒を含めてメモ。
事は、getElementById の動作が、IE では id 属性を指定していなくても、name 属性が一致すればオブジェクトを取り出せてしまったことが始まりです。
つまり、IE では動作していたスクリプトが、Firefox などでは動かないと言われ、気づいたのです。
ここには2つ問題があって、一つは今の id 属性を指定していなければオブジェクトを取得できないと言うこと。
もう一つは、document オブジェクトの指定を省いた場合、IE はそれを補完する機能が働くこと、でした。
このため、name 属性のみを指定した要素を getElementById() のみで取得した場合、IE は動作するが Firefox などでは動作しないと言う先の問題が発生したのでした。
*
きちんと考えて、ドキュメントを読めば当たり前の事だったのですが、まぁミスしてしまいました。はぁ。
2月 02
こんなエラー
「’Sys’ は宣言されていません」
RAD Studio 2007 にて ASP.NET Web サイトを作成し、上記のエラーが出た場合には、Web.config の修正が必要です。
JavaScript への参照が出来ていないのが原因ですので、下記のように system.web ディレクティブに HTTP 要求に対するハンドラを追加してください。
<system .web>
<httphandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httphandlers>
</system>
※新規で「AJAX 対応 ASP.NET Web アプリケーション」を作成した場合には元々記述されています。
1月 29
1.0.11119.0 を RAD Studio 2007 にインストールすると、うまく動かないっぽい。
パッケージ参照がおかしいというエラーが出てしまいます。
11月 19
また JavaScript ネタです。
HTML 内の form のオブジェクトをいじる際、document.formName.~ などと指定をすることが多いのですが、IE と FF では動作に差があるのをきちんと知りませんでした。
この formName の指定は、form タグの id 属性を指定することで問題ないと思っていたのですが、FF では name が無いと見ないようなのです。
そのため、一部の JavaScript が FF で動かず、と言った自体を引き起こしていました。
ブラウザの JavaScript の互換性として、気にすべきポイントですね。
11月 16
プログラムを組んでいる最中に、久しぶりに長い時間はまりました。
それは、タイトルの通り、JavaScript には終了タグが必須だと言うことを忘れ、XML 風味に略式で外部スクリプトの定義を書いてしまったことです。
画面がページによって崩れてしまい、えらいことになりました。
w3c のここにも乗っているとおり、End tag は required でした。
つまり、
<script type="text/~" src="~" mce_src="~" />
はダメで、
<scrpt type="text/~" src="~" mce_src="~">
にしなければならないと言うことです。
タグのコンテンツが無くても、記述が必須なんですね。
言いわけをすれば、今まで JavaScript は使わない主義だったので、経験が足りないと言ったところでしょうか。
11月 13
元々、Web Development Helper は、AJAX 専用のツールではありません。
HTTP の通信内容を確認したりするためのツールです。
ですが、XMLHttpRequest も見られるので、AJAX で行われる Request/Response の内容を1つずつ追っていくのにも便利なので、メモしておきます。
まず、Nikhil Kothari’s Projects にある Binaries から一番新しいものをダウンロードし、MSI でインストールします。
ブラウザを新しく立ち上げれば使えるようになっていますので、エクスプローラ バーなどから表示を行い、HTTP Logging にチェックを入れれば、あとは通信するごとにログが取れます。

これを利用することで、エラーが判りづらい AJAX の通信内容も、かなりデバッグしやすくなりました。
9月 29
Ajax ライブラリとしての Spinelz が今気になっています。
今の開発に最低限欲しかった、日付入力系、タブ、モーダルなウィンドウ表示、が出来ます。
うまく使えそうであれば、色々組み込んでいきます。
Recent Comments