2

大きなファイルをアップロードする機能を必要とするアプリケーションを作成しています。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'  
});   
4

2 に答える 2

2

IE のみのブラウザー用に css スタイル シート/javascript ファイルを追加する簡単な方法を探している場合は、条件付きコメント引数を次のように使用できます。

CSS スタイルシート以外のファイルの場合:

$this->view->headLink()->appendFile($this->view->baseUrl() . '/media/js/core.js', 'text/javascript', array('conditional' => 'IE');

array('conditional' => 'IE')引数に注意してください。

スタイルシート ファイルを追加する場合、関数の引数は少し異なります。

$this->view->headLink()->appendStylesheet($this->view->baseUrl() . '/media/css/core.css', 'all', 'IE');

http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.headstyle

于 2012-05-03T14:16:58.033 に答える
-2

機能が利用できない場合に備えて、JavaScriptを追加できます(短い構文にjqueryを使用しています)。

if(typeof featureA == "undefined"){
    $("<script/>").attr({
        "src" : "/assets/featurea.js",
        "type": "text/javascript"
    }).appendTo($("head").eq(0));
}

他の機能にも同じものを使用できるため、すべてをダウンロードする必要はありません。

于 2012-05-03T14:35:17.960 に答える