HTMLで作ったファイルの拡張子を.htaにすれば、ローカルアプリケーションとなる。
ローカルアプリケーションなので、ゾーン設定はローカルになるので、Javascriptが入っていてもセキュリティ云々の表示がでない。
●注意事項
HTAはHTML Applicationである。
パッと見、HTMLみたいな拡張子なので、「データかな」と思いがちであるが、
これは、.exeと同じ実行ファイルなので、ダウンロードの際には、
.exeと同じような注意喚起が必要である。
事実、HTAを用いた悪意ある動画サイトがたくさん出回っているようだ。
ネーミングがあまりにデータっぽいので、こうなるが気をつけるべきだ。
●やってみた。
納品もすんだので、納品したファイルでHTAを作ってみた。
●サーバーへのアップロード
HTAのままでサーバーにアップロードしてみる。
たいていのサーバーではmime/typeが設定されていないので、
.htaを設定しなければならない。
MSDNあたりでは、Addtype Apprication/hta .htaと書かれているが、
Windowsサーバーなら大丈夫だろうが、たいていのサーバーには
アプリケーションがインストールされてないし、面倒なので
.htaccessにAddType text/html .htaで書いてみた。
精査したわけではないが、普通にhtmlとして動いているようだ。
これなら、使えそうだな。と全ファイルを.htmlから.htaにリネーム。
全てのコードを全置換で「.html」を「.hta」にリンク変更。
それだけで、とりあえず、動く。
が、いくつか問題点。
●いちいち別ウインドウで開く。
そのままでは、リンク先は、別ウインドウで開こうとする。
これは、HTA専用タグで設定しなければならない。
< hta:application
navigable="yes"
/ >
他にも、アイコン付けたり、ウインドウ設定などのタグがある。
htmlにもどしても、このタグは読み飛ばすようなので、問題なし。
●PDFが開かない。
普通にPDFにリンクを張っていたら、普通は別ウインドウでacrobatが立ち上がるが、HTAアプリケーション内に文字の羅列として表示される。
なぜ、Windowsのmime/typeが効かないのか?よくわからん。
とりあえず、target="_blank"で逃げておく。
●wmvが開かない。
上記と同様、ウインドウ内が文字の羅列で表示される。
同じ方法をとってみると、ダウンロードの表示がででくる。
むむむ。
確かに、「アプリケーション」ならば、アプリケーション内に動画再生ウインドウを設けるべきなだろうな。
WindowsMediaPlayerを起動するなんてザルなアプリケーションは、特殊だな。
というわけで、動画再生HTMLを作る事にした。
本質的な解決ではない。何か方策があるはずだろうとは思う。
●History backが効かない。
これはセキュリティ問題が絡んでいるのか、documet構造の考え方が違うのか、
history.backだけでは、動かないようだ。DOM的に変更すればいいのかもしれない。もしくは、クエリで遷移前のファイル名を渡すかだな。
いくら検索しても、答えは見つけられなかった。
msdnに英文のこんな記事を発見はした。
http://social.msdn.microsoft.com/Forums/ja-JP/iewebdevelopment/thread/b02d6915-0c8c-406a-a5fd-9bc083435af7
iframeは設けていないのだが…。historyオブジェクトはドキュメントオブジェクトの子オブジェクトになるからどうなんだろう?誰か教えて。
●HTAからHTAの自動遷移
ちょっと古いHTMLを使い回していたもので、
<metaタグに<meta http-equiv="refresh" content="0; url=aaa.htm" などと書いていたのが動かなかった。
<body onLoad="location.replace(’moveto.hta’);”
ってのなら、動いた。
以上、本日の勉強、おわり。
ローカルアプリケーションなので、ゾーン設定はローカルになるので、Javascriptが入っていてもセキュリティ云々の表示がでない。
●注意事項
HTAはHTML Applicationである。
パッと見、HTMLみたいな拡張子なので、「データかな」と思いがちであるが、
これは、.exeと同じ実行ファイルなので、ダウンロードの際には、
.exeと同じような注意喚起が必要である。
事実、HTAを用いた悪意ある動画サイトがたくさん出回っているようだ。
ネーミングがあまりにデータっぽいので、こうなるが気をつけるべきだ。
●やってみた。
納品もすんだので、納品したファイルでHTAを作ってみた。
●サーバーへのアップロード
HTAのままでサーバーにアップロードしてみる。
たいていのサーバーではmime/typeが設定されていないので、
.htaを設定しなければならない。
MSDNあたりでは、Addtype Apprication/hta .htaと書かれているが、
Windowsサーバーなら大丈夫だろうが、たいていのサーバーには
アプリケーションがインストールされてないし、面倒なので
.htaccessにAddType text/html .htaで書いてみた。
精査したわけではないが、普通にhtmlとして動いているようだ。
これなら、使えそうだな。と全ファイルを.htmlから.htaにリネーム。
全てのコードを全置換で「.html」を「.hta」にリンク変更。
それだけで、とりあえず、動く。
が、いくつか問題点。
●いちいち別ウインドウで開く。
そのままでは、リンク先は、別ウインドウで開こうとする。
これは、HTA専用タグで設定しなければならない。
< hta:application
navigable="yes"
/ >
他にも、アイコン付けたり、ウインドウ設定などのタグがある。
htmlにもどしても、このタグは読み飛ばすようなので、問題なし。
●PDFが開かない。
普通にPDFにリンクを張っていたら、普通は別ウインドウでacrobatが立ち上がるが、HTAアプリケーション内に文字の羅列として表示される。
なぜ、Windowsのmime/typeが効かないのか?よくわからん。
とりあえず、target="_blank"で逃げておく。
●wmvが開かない。
上記と同様、ウインドウ内が文字の羅列で表示される。
同じ方法をとってみると、ダウンロードの表示がででくる。
むむむ。
確かに、「アプリケーション」ならば、アプリケーション内に動画再生ウインドウを設けるべきなだろうな。
WindowsMediaPlayerを起動するなんてザルなアプリケーションは、特殊だな。
というわけで、動画再生HTMLを作る事にした。
本質的な解決ではない。何か方策があるはずだろうとは思う。
●History backが効かない。
これはセキュリティ問題が絡んでいるのか、documet構造の考え方が違うのか、
history.backだけでは、動かないようだ。DOM的に変更すればいいのかもしれない。もしくは、クエリで遷移前のファイル名を渡すかだな。
いくら検索しても、答えは見つけられなかった。
msdnに英文のこんな記事を発見はした。
http://social.msdn.microsoft.com/Forums/ja-JP/iewebdevelopment/thread/b02d6915-0c8c-406a-a5fd-9bc083435af7
Hi,
do you have an iframe in your HTA? the history object in IE9 and less is a child of the document object. You need a handle to the document object of an iframe to apply ITS history methods.
iframeは設けていないのだが…。historyオブジェクトはドキュメントオブジェクトの子オブジェクトになるからどうなんだろう?誰か教えて。
●HTAからHTAの自動遷移
ちょっと古いHTMLを使い回していたもので、
<metaタグに<meta http-equiv="refresh" content="0; url=aaa.htm" などと書いていたのが動かなかった。
<body onLoad="location.replace(’moveto.hta’);”
ってのなら、動いた。
以上、本日の勉強、おわり。
コメント