ブログパーツ的なものの作成方法

JavaScript, PHP, TIPS, 開発 No Comments »

ブログパーツや、ウィジェット(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 を通常通り出力すれば、動作します。
縦横の出力サイズだけ気をつけましょう。

まとめ

今回の方法であれば、ビジネスロジックはすべて自社などのサーバに集約でき、プレゼンテーション部分だけホスト側に合わせて作れば良いので、無駄が少ないかと思っています。

デスクトップ ガジェットなども、今後作ってみたいですね。

  • Share/Bookmark

ブラウザの違いによる JavaScript の getElementById の動作

JavaScript, TIPS, 開発 No Comments »

最初に断っておくと、私は JavaScript が嫌いである。
厳密には、JavaScript を自分で記述するのが嫌いである。

開発において、想定しづらいほど多い複数の環境に対して動作を保証するのは困難だから、と言うのが正直なところ。

だから、できる限りカプセル化したライブラリを用い、なるべく自分で記述はしないようにとしています。
これも一つの品質に対する考えだと思うのです。

*

さて、そうは言ってもテキストボックスのクリアぐらいは書くのもしょうがないと思っていたら、くだらないミスをしてしまったので忘れないように自戒を含めてメモ。

事は、getElementById の動作が、IE では id 属性を指定していなくても、name 属性が一致すればオブジェクトを取り出せてしまったことが始まりです。

つまり、IE では動作していたスクリプトが、Firefox などでは動かないと言われ、気づいたのです。

ここには2つ問題があって、一つは今の id 属性を指定していなければオブジェクトを取得できないと言うこと。
もう一つは、document オブジェクトの指定を省いた場合、IE はそれを補完する機能が働くこと、でした。

このため、name 属性のみを指定した要素を getElementById() のみで取得した場合、IE は動作するが Firefox などでは動作しないと言う先の問題が発生したのでした。

*

きちんと考えて、ドキュメントを読めば当たり前の事だったのですが、まぁミスしてしまいました。はぁ。

  • Share/Bookmark

AjaxControlToolkit の JavaScript で ‘Sys’ が宣言されていないエラー

Delphi, JavaScript, TIPS, 環境設定, 開発 No Comments »

こんなエラー

「’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 アプリケーション」を作成した場合には元々記述されています。

  • Share/Bookmark

AjaxControlToolkit のバージョン

Delphi, JavaScript, 環境設定, 開発 3 Comments »

1.0.11119.0 を RAD Studio 2007 にインストールすると、うまく動かないっぽい。

パッケージ参照がおかしいというエラーが出てしまいます。

  • Share/Bookmark

Firefox の form タグには name 属性を必ず指定しましょう

JavaScript, TIPS, Tasks, 開発 No Comments »

また JavaScript ネタです。

HTML 内の form のオブジェクトをいじる際、document.formName.~ などと指定をすることが多いのですが、IE と FF では動作に差があるのをきちんと知りませんでした。

この formName の指定は、form タグの id 属性を指定することで問題ないと思っていたのですが、FF では name が無いと見ないようなのです。

そのため、一部の JavaScript が FF で動かず、と言った自体を引き起こしていました。

ブラウザの JavaScript の互換性として、気にすべきポイントですね。

  • Share/Bookmark

JavaScript って終了タグが必要なんです

JavaScript, TIPS, Tasks, 開発 No Comments »

プログラムを組んでいる最中に、久しぶりに長い時間はまりました。

それは、タイトルの通り、JavaScript には終了タグが必須だと言うことを忘れ、XML 風味に略式で外部スクリプトの定義を書いてしまったことです。

画面がページによって崩れてしまい、えらいことになりました。

w3c のここにも乗っているとおり、End tag は required でした。

つまり、

<script type="text/~" src="~" mce_src="~" />

はダメで、

<scrpt type="text/~" src="~" mce_src="~">

にしなければならないと言うことです。

タグのコンテンツが無くても、記述が必須なんですね。

言いわけをすれば、今まで JavaScript は使わない主義だったので、経験が足りないと言ったところでしょうか。

  • Share/Bookmark

Web Development Helper で AJAX のやりとりを見てみる

JavaScript, 開発 No Comments »

元々、Web Development Helper は、AJAX 専用のツールではありません。
HTTP の通信内容を確認したりするためのツールです。

ですが、XMLHttpRequest も見られるので、AJAX で行われる Request/Response の内容を1つずつ追っていくのにも便利なので、メモしておきます。

まず、Nikhil Kothari’s Projects にある Binaries から一番新しいものをダウンロードし、MSI でインストールします。

ブラウザを新しく立ち上げれば使えるようになっていますので、エクスプローラ バーなどから表示を行い、HTTP Logging にチェックを入れれば、あとは通信するごとにログが取れます。

web-development-helper.png

これを利用することで、エラーが判りづらい AJAX の通信内容も、かなりデバッグしやすくなりました。

  • Share/Bookmark

Spinelz が面白そう

JavaScript, TIPS, 環境設定, 開発 No Comments »

Ajax ライブラリとしての Spinelz が今気になっています。

今の開発に最低限欲しかった、日付入力系、タブ、モーダルなウィンドウ表示、が出来ます。

うまく使えそうであれば、色々組み込んでいきます。

  • Share/Bookmark
WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン