2009-08-12 18 views
2

私は2つの部分の質問があります。最初の私はと思う私は良い答えを持っています....外部プログラムにWebブラウザ経由で提供されるファイルを開くように求めるにはどうすればよいですか?外部プログラムがインストールされているかどうかを検出する方法はありますか?

私は私の会社が取り組んでいるアプリケーションの構成ファイルを表示するために外部プログラムを呼び出すように強制したいと考えています。私が推測する基本的な要点は、Content-typeヘッダーを設定してアプリケーションが関連していることをタイプしてから、ファイルの内容を提供することです。私は単純にこのように構成されていると思っていた:

<?php 
Header("Content-type: application/blahtype"); 
?> 
output of xml configuration file goes here... 

他のベストプラクティスはここにありますか?明らかに、ユーザーは、adobe pdfのようなコンテンツタイプを処理するブラウザにプラグインがインストールされていない限り、このファイルへの外部アプリケーションのアクセスをすべてのブラウザで普遍的に許可する必要があります。これは現在、当社にとっては実行可能ではないため、確認画面で喜んで暮らしています。

質問の第2部分は少し複雑です、と私は思います。ユーザーにアプリケーションがインストールされているかどうかを検出し、そうでない場合は、さまざまなコンテンツ(サインアップページまたはアプリケーション実行ファイル自体)を提供しますか?私は、さまざまなコンテンツを提供するという物流については疑問に思っていませんが、単に検出プロセスにすぎません。アプリケーションがマシンにインストールされているブラウザのキャッシュに生涯のクッキーをインストールすることは可能ですか?これは完璧な解決策ではありません。ユーザーがキャッシュをクリアできるからです。それ以外はどのように達成できますか?これを実行するプログラムの

例としては、あなたがここにStanfords CS193Pページ上のiTunes Uの例を見ることができますアマゾンMP3ダウンローダー(私は実際に一度か二度、これに悪い状態に得ている)、とiTunes U.です:http://www.stanford.edu/class/cs193p/cgi-bin/index.php

多くは任意のアドバイスに感謝、 ジョシュ

答えて

3

質問のパート1については、アプリケーションがMIMEタイプを処理するために正しく登録されている場合、ブラウザは[ユーザーに確認してアプリケーションを起動する]必要があります(http://msdn.microsoft.com/en-us/library/ms775148(VS.85).aspx "インターネットエクスプローラ")。

[プロトコルハンドラ](http://msdn.microsoft.com/en-us/library/aa767914(VS.85).aspx "MSDN:URLプロトコルへのアプリケーションの登録")の代替方法があります。アプリケーションのMIMEタイプを登録する代わりに、http://の代わりにURLに入る「プロトコル」を登録します。あなたのプロトコルがmyapp呼び出された場合は、このようなリンクを作成することができます。

<a href="myapp:data-goes-here-urlencoded">Link</a> 

あなただけの少量の情報をこの方法で渡すことができますが、アプリケーションは、一度、可能打ち上げGUIDまたはタグを渡すことができますサーバからフルドキュメントを取得するために使用します。

編集:質問のパート2では、iTunesはプラグインを使用しています。そのプラグインがロードされたかどうかを検出するために、いくつかのJavaScriptが続いています

<Object id="iTunesDetector" height="1" classID="CLSID:D719897A-B07A-4C0C-AEA9-9B663A28DFCB" width="1"></Object> 

:iTunesにリダイレクトするために使われているコードを見てみると、あなたはこのようなものが表示されます。その場合は、iTunesをインストールして、itms:プロトコル(上記の例のmyapp:プロトコルと同様)を使用してiTunesを起動する必要があります。

ここでの問題は、ブラウザプラグインを作成する必要があることです。

+0

ありがとうございます!私はどちらのアプリケーション起動ソリューションも良いと思われると思います。さて、問題は、私のベースをすべてのブラウザをカバーするにはどのようにプラグインを知っている人に知られている...すべてのベースをカバーするまで私は誰かにダウンロードファイルを提供するときにクッキーのフォールバックがあるかもしれません。 – Josh

0

このようなもののために、ブラウザの拡張機能を使用してに見るのは良い考えかもしれません。

関連する問題