大きなファイルをアップロードする機能を必要とするアプリケーションを作成しています。FormDataオブジェクトを使用することにしました。これを使用すると、進行状況をユーザーに報告できます。
当然のことながら、IE はこれをサポートしていないため、Flash にフォールバックする必要があります。Zend Framework を使用して IE 7/8/9+ を検出する最良の方法は何ですか? 各コントローラーの indexAction メソッドを介して、必要に応じて他のアセットを読み込んでいます。例えば:
public function indexAction()
{
$this->view->stepnumber = 1;
$this->view->stepintro = 'Upload your photo.';
$this->view->headScript()->appendFile($this->view->baseUrl().'/assets/js/fileuploader.js');
}
さて、私のページの 1 つで、何らかの形式のブラウザー検出を既に行っています (いくつかのcanvas
作業のために):
public function indexAction()
{
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$this->view->stepnumber = 5;
$this->view->stepintro = 'Select your cut out detail.';
if(preg_match('/MSIE/i', $u_agent)) {
$this->view->headScript()->appendFile($this->view->baseUrl().'/assets/js/excanvas.js');
} else {
$this->view->headScript()->appendFile($this->view->baseUrl().'/assets/js/mootools/mootools-canvas-lib/mcl-min.js');
}
$this->view->headScript()->appendFile($this->view->baseUrl().'/assets/js/frank/pentool.js');
$image = $this->uploadsDb->getImage();
$data = $this->nodedataDb->getNodedata($image->id);
$this->view->image = $image;
$this->view->nodeData = $data;
}
私はこの方法にあまり自信がありませんが、Javascript を使用する方がより将来性があるのでチェックしたいと思います (私はそう思います)。しかし、ZF layout.phtml 内で Javasript を使用して、必要な Javascript のみをロードするにはどうすればよいでしょうか? サーバーへの呼び出しを減らします。
どんな助けでも大歓迎です。
解決:
私はYepNopeを使用することに決めました:
yepnope({
test : "FormData" in window,
yep : 'normal.js',
nope : 'flashupload.js'
});