「ファイルのダウンロード」ダイアログ
「ファイルのダウンロード」ダイアログを表示させる最もポピュラーな方法は、ウィンドウの location.href プロパティに対象ファイルの URL を設定することである。しかし右クリックメニューから呼び出される非表示ウィンドウでこの処理を行うと幾つかの問題が生じる。まず非表示ウィンドウはページの読み込み完了と同時に閉じられるため、 location.href に値を設定すること自体意味がない。よって通常は代わりに呼び出し元ウィンドウの location.href プロパティを設定する。
ひとつはユーザのセキュリティ設定によってはファイルのダウンロードがブロックされてしまうこと。具体的には「ファイルのダウンロード時に自動的にダイアログを表示」が無効になっていると情報バーが表示される。通常は情報バーをクリックして「ファイルのダウンロード」を実行することでダウンロード処理が再開されるが、右クリックメニューからこれを実行されるスクリプトは情報バーが表示されたときにはすでに終了しており、「ファイルのダウンロード」をクリックしてもすでに反応はない。この場合、もう一度右クリックメニューから動画のダウンロードを実行しなければならない(一度許可した情報バーはブラウザを終了するまで有効である)。場合によっては新規で空ウィンドウが追加されたり、セキュリティの設定によっては情報バーが表示されてしまい、使い勝手が悪い。
Proxomitron を経由する場合は "Send only HTTP/1.0 requests" のチェックを外しておく必要がある。
XMLHttpRequest を使わない理由
Internet Explorer がスクリプトホストとなる JavaScript において、XMLHttpRequest のリクエストはスクリプトと同一のドメインに限定される。これはセキュリティ上の配慮によるものであり、ブラウザ上でローカルスクリプトとして動作する GetFLV もこの例外ではない(そもそもプロトコルからして file:// である)。余談だが WSH や HTA ではこの制限がないため、任意のドメインに対してリクエストを送ることが可能である。
XMLHttpRequest はリダイレクト処理が自動化されているが、リダイレクト後の URL を知る仕組みが用意されていないのが欠点である。それに対して WinHttpRequest では Option(WinHttpRequestOption_EnableRedirects) プロパティを参照してリダイレクト後の URL を取得することが可能。またリダイレクト処理を無効化して、Location ヘッダを参照するという手もある。ただし当然ながらリダイレクトは行われないのでその処理自体は自前で実装する必要がある。
htmlfile オブジェクトの利用には「インターネット オプション」から「詳細設定」タブを表示し、「マイコンピュータのファイルでのアクティブコンテンツの実行を許可する」を有効にしておく必要がある(
ロックダウン機構)。
最終更新:2008年11月05日 23:43