« 2008年8月 | トップページ | 2009年1月 »

2008/12/27

Google Toolbarの最新版をインストールするとJavaScriptの挙動が変わることがある(window.external関連で)



最近、顧客の一人から指摘があり、原因を特定できず、非常にあせったことがあります。環境を聞いても、Internet Explorer 6ですから特に変わった環境ではないどころか、ありふれています。再現できませんでした。

本当にIE6かどうかを確かめるため、その顧客にユーザーエージェント(ビルド番号も)を調べるサイトにアクセスしてもらったところ、こちらの複数端末のIE6との違いは唯一でした。「GTB5」という文字列が入っていることでした。早速、Google Toolbar 5をインストールしたところビンゴ! 再現できました。

以下のようなサンプルコードを実行した場合、IE6ではAddSearchProvderメソッドはサポートされていませんから、
IE6では、
window.exteranalはサポートされています。
AddSearchProviderはサポートされていません。

となるはずです。ところが、Google Toolbarの最新版がインストールされているIE6では、

window.exteranalはサポートされています。
AddSearchProviderはサポートされており、unknownです。
ボタンの表示

となります。

●設置サンプル
http://shimax.cocolog-nifty.com/gt5.html

window.external.AddSearchProviderがundefinedでないことに安心して、ボタンをそのまま表示させてしまっています。このまま、try~catch~を使わずにこのメソッドを実行してしまうとエラーが発生してしまうのです。そもそも検索プロバイダに追加できないブラウザに対してもこのボタンを表示させたくなかったのですが・・・。

Google Toolbarではwindow.externalのプロパティへのアクセスでエラーが出ないようにする処理を入れているか何かでこのような結果(undefinedを返すべきところでundefinedが返らない結果。)になってしまっているのでしょうが、これは困ったことです。このためにコードを書き換えて、「IE6以下の場合はダメ」と素直に書き直すしかなさそうです。

 上記の話は、実際のトラブルの話を少し変えています。そのまま公開するわけにはいかないこと(いわゆる企業秘密?)があるためです。特殊なケースであったかもしれないのですが、IE6だけでなく、IE7でも問題が発生していました。ただ、その特殊なケースを説明できないので、確実に問題が発生するIE6でのみ起こるかのように説明しています。とにかく、Google Toolbarの最新版ではwindow.externalのプロパティへのアクセスでエラーが出ないようにする処理が入っていること(推論です。)が原因で、プログラムが誤作動することがありました。

続きを読む "Google Toolbarの最新版をインストールするとJavaScriptの挙動が変わることがある(window.external関連で)"

| | コメント (0) | トラックバック (0)

2008/12/18

Flash 10の新機能・ローカルのテキストファイルの読み込み

Flash 10新機能・ローカルファイルのロード・保存機能の話の続き(前回の話はこちら)です。MP3ファイルや画像ファイルの読み込みのサンプルサイトは前回ご紹介しましたが、今回は、テキストファイルのロードや保存機能についてです。

基本はバイナリーファイルと同じですが、テキストファイルの場合、文字コードを意識しないと文字化けしたりするので、とことんまで作りこもうと思うと、ものすごい手間がかかりそうです。

● FLASH+α: FlashPlayer10 テキストファイルを開く、保存する
http://rx8.cocolog-nifty.com/blog/2008/05/flashplayer10_2616.html

テキストファイルの文字コードがUTF-8であると分かっている場合は、上記のサンプルでいけると思います。Shift_JISであると分かっている場合は、System.useCodepage=true;を使えばいいでしょう。ただ、読み込まれるファイルの文字コードが不特定の場合には、

● readMultiByte () メソッド
http://livedocs.adobe.com/flex/3_jp/langref/flash/utils/IDataInput.html#readMultiByte()
を使えば解決するはずです。第二引数で文字コードの指定ができるため、日本語を扱う代表的な文字コードなら大丈夫のはずです(Flashでサポートされる文字コードの一覧)。ところが、Flash CS4 の体験版を使った感じだとEUC-JPを正しく認識してくれません。調べてみると、

● WEB2MEMO =PHP、Ajax、JAVA、AIR、Flex2/3、Ruby、Rails等のメモ= AIR1.0/readMultiByteがブッ壊れ気味な件(AIR)
http://web2memo.blog120.fc2.com/blog-entry-217.html
にあるのと同じ現象が起こっているようです。

EUC-JPのファイルの場合、一旦UTF-8に変換することで、大方の場合OKですが、機種依存文字(「①」「㈱」「Ⅱ」「髙」「彅」など)を含む場合、このブログで1年前に書いたこともあるPHPでの文字コード変換の問題

● PHPで、いわゆる機種依存文字の文字コード変換(EUC-JP→UTF-8)にはまる
http://shimax.cocolog-nifty.com/search/2007/12/phpeucjputf8_f714.html

と同じことが起こるようです。恐るべし機種依存文字。Flash CS4の製品版では、このreadMultiByte () メソッドの問題はないかもしれません。



ソーテックならミニノートもデスクトップも安い!

| | コメント (0) | トラックバック (0)

2008/12/17

Flash 10の新機能・ローカルファイルの読み込み

Flash CS4の発売日が近づいてきました。私も既に、Windows版 Adobe Flash CS4 Professional 日本語版 アップグレードを予約中です。まだ、CS4の体験版しか利用していませんが、なかなか良さそうです。

●akihiro kamijo: Flash Player 10 のローカルファイルアクセス機能 (FileReference クラス)
http://weblogs.macromedia.com/akamijo/archives/2008/07/flash_player_10_5.html

にあるローカルファイルアクセス機能(loadとsaveメソッド)がすごいと思いました。これにより、画像のアップロード時にプレビューさせることなどもできるようになるでしょう(JavaScriptの場合、ブラウザ限定になってしまいますが、Flash 10の機能を使えば、ブラウザに依存することなく、また恐らくOSに依存することなくプレビューできるようになりそうな気がします)。

面白いサンプルも続々?と公開されています。例えば、

●FileReference.loadでサウンドをロードするライブラリ
http://blog.boreal-kiss.com/2008/05/29215224.html

には、MP3 Jukeboxとも言うべきサンプルが公開されています。しかも、2008年5月の時点で。この時点では、β版?でテストされていたんでしょうね。すごいです。

同様なMP3 Playerのサンプルは、
●FlexibleFactory » Blog Archive » How to load MP3 files from a FileReference(英語)
http://www.flexiblefactory.co.uk/flexible/?p=46
です。

また、画像を読み込ませるタイプの場合、
●Flash Player 10でPV3D上の落書きを保存してみる | ClockMaker Blog
http://clockmaker.jp/blog/2008/10/astro_filereference/
などが参考になると思います。

●ローカルファイル機能を使った簡単な3Dビューワー - PHP,MySQL,Flexな日々+イラストとか
http://d.hatena.ne.jp/haru-komugi/20081107/1226027950
のように3DデータもOKのようです。

●AlivePDF - AlivePDF with FileReference in Astro
http://alivepdf.bytearray.org/?p=20
のように、flashでローカルの画像ファイルをその場でPDF化して保存することも可能になりました。

このように便利なFlashのローカルファイルアクセス機能なのですが、一つ仕様が改善されないかなと思っていることがあります。それは、下記の画像を見てみてください。これは上記のMP3 JukeboxでMP3ファイルを選択しようとしているところですが、



赤丸のとこに、「『サーバ名』でアップロードするファイルを選択します」と書いてあります。実際には、このサーバにMP3ファイルがアップロードされるわけではないのですが、ファイルブラウズ画面が出るだけで、「アップロード目的」であるという前提に立ったタイトルが自動付与されてしまいます。このタイトルを何とか変える方法があればと思っていますが、まだ見つかっていません。ファイルアップロード時のプレビューに使うのであればこのままでいいのですが・・・。

ローカルのテキストファイルのloadに関する参考になるサイトのまとめは次回にしようと思います。



Pavilion Desk 秋冬モデル TFTモニタセットが5万円台から!

| | コメント (0) | トラックバック (1)

2008/12/10

PDFファイルを保存不可にする方法



PDFファイルを保存不可にしたいという顧客からの依頼があって、PDF保護モードなるものを、今年の下半期は主に開発してきました。

PDFファイルは、MS WORDなどからの変換も容易なため、インターネット(イントラネット)上で非常に重宝するわけですが、見せるだけにしたいのに保存されてしまうと厄介な場合があります。

まず、「PDFをブラウザに表示」の設定をしていない場合には、通常、PDFファイルのリンクをクリックした場合に、Adobe Reader(プラグインではなく、ブラウザとは完全に別のプログラムとして)が起動してしまいますから、保存されてしまいます。FirefoxやOperaなどでは、「PDFをブラウザに表示」する設定になっているかどうかは、「一応」、JavaScriptでnavigator.pluginsを調べれば分かりますが、Internet Explorerの場合はこの方法では分かりません。Flash Playerの検出方法と同じく簡単に調べられたらいいのですが、この情報はあまり公開されていないようです。

次に、ブラウザ内に表示する設定になっていない場合にはエラーではじき、ブラウザ内にPDFファイルを表示することができたとしても、ツールバーが表示されていれば保存ボタンから簡単に保存されるため、これをプログラム的に非表示にする方法を探さなければなりませんでした。Adobe AcrobatでPDFファイルを作成する際にツールバーを非表示にして作成する方法もあることにはありますが、そのままWEB上で公開すると、ブラウザのメニュー(ファイル→「名前を付けて保存」)で簡単に保存できてしまうため、これに対処する必要があります。

そんなことんなで、かなり苦労してこのPDF保護モード(基本的に、Adobe Reader 5以上で動作。サンプルやオンラインデモを公開中です。)は生まれました。もちろん、より完璧なセキュリティを求めるなら「DRM」ということになるのでしょうが、一般的に非常に高価ですし、また別途、専用ソフトウェア(ビューア)のダウンロードを閲覧者にお願い(強要)しなければならないことを考えれば、このPDF保護モードはそこそこ需要があるのではと秘かに期待しています。価格は22,780円~(2008年12月10日現在。キャッシュ対策を組み合わせても、42,780円~)と非常に安価です。

それにしても、Adobe Acrobatに保存不可の設定が(たぶん)ないのが不思議ですね。印刷不可にすると、ツールバーのプリンター・アイコンはグレイ・アウトしてクリックできないようになっているのですから、同じように保存ボタンもグレイ・アウトさせてクリックできないようにすることぐらい、Adobe社がやろうと思えば簡単にできるように思えなくもないのですが・・・。部外者にはよく分からない・何か深い理由があるのかもしれません。

Acrobat JavaScriptを使ったトリッキーな方法で保存不可にする方法もできないことはないようですが、Acrobat JavaScriptを無効にされていたり、Adobe Reader以外のビューアで閲覧された場合には、そのような対策も無力だったりしますし・・・。

(2009年4月16日午後13時24分ごろ追記・訂正)
その後、これらの問題をクリアして、Acrobat® JavaScriptを利用して、特定のURL(ドメイン・パス)でしか開けないPDFファイルを作成する方法を開発しました。



ユーザーアンケートでダントツ!!プロバイダーDTIで楽しいインターネットライフ!

| | コメント (0) | トラックバック (0)

2008/12/09

5万円で買えるミニノート・注意点など



今なら1万2千円OFF&&HDD無料アップ(2月17日午後17時まで)

最近、ミニノートの話題について聞かない日がないぐらい、よく耳にします。そして、1年ぐらい前なら考えられないような価格。何でこんなに安いの? というものが多いです。

ミニノートに参戦しているメーカーは多いですが、例えばソーテック。12月11日17時までなら1万円off&&HDD無料アップ中で、標準構成なら44,800円~。さらに、イー・モバイルにねんMAX構成ならなんと100円~!! もともとモバイル・インターネットを中心に利用しようと考えた人にとっては、まさしくただのような値段です。

ただ、標準構成の場合、DVDドライブがなかったりします。つけても1万円ぐらいのアップで可能であり、多少重量は増えるでしょうが、もし重さが何が何でも重要でなければ、余暇・リラックスタイムのためにもDVDドライブは、是非とも欲しいところです。ソーテックの場合はプラス1万円で可能なようです。もちろん、パソコンメーカーのサイトで一緒に買わないといけない理由もないのですが・・・。

あと、ミニノートの売りは小さいことだけど、いくら小さいからといってモニターが9インチだとかなり狭く感じます。弟のパソコンをちょっと借りてみた感じではそうでした。その点、10.1とか10.2になるとだいぶ違います。

関連リンク:
快適Net.com 「5万円以下ミニノート特集」(日本ヒューレット・パッカード株式会社編)

「5万円以下ミニノート特集」(ソーテックオンラインショップ編)

| | コメント (0) | トラックバック (0)

« 2008年8月 | トップページ | 2009年1月 »