1

jqueryを備えた軽量のphpフレームワークであるATK4を使用して、ブラウザのウィンドウの高さと幅を取得する必要があります

これを取得するためのJavaScriptは次のようになります

 $(window).height();
 $(window).width();

agiletoolkitはjqueryと統合されているので、次のようなもので取得できるはずだと思います

         $height=$p->js()->univ()->_selectorWindow()->height();

しかし、これは機能しません。代わりに、使用する$ height変数を渡すと、HTMLソースで次のようになります。

 'height':$(window).univ().height(),'width':$(window).univ().width()

要素はまったく表示されません

jqplotを呼び出して、グラフの幅を特定のページのユーザーブラウザの全幅に設定できるようにしたいと思います。これを行うには、width:NNNであるパラメーターを渡す必要があります。ここで、NNNは幅のピクセル数です。私の知る限り、jqplotはパーセンテージとしてのパラメーターをサポートしていないため、width:100%とは言えません。また、ページにdivを設定してグラフを追加すると、divのサイズも無視され、400x300ピクセルの小さなグラフのみが作成されます。

atk4からjqplotを使用するプラグインを作成しましたが、これはまだ解決する必要のある問題の1つです。高さと幅をパラメータとして問題なく渡すことができますが、パラメータが指定されていない場合は、デフォルトで全画面サイズに設定したいと思います。

誰かがこれらの値を取得するための正しい構文を提案できますか?TIA。

4

1 に答える 1

2

理解しておくべきことは、「$p->js()->_selectorWindow()->height();」ということです。実際には「$(window).height();」に変換されます -- ただし、クライアント側でのみウィンドウの幅を取得できます。

したがって、コードでウィンドウの高さを取得したい場合は、実際の高さがフロントエンドから返される ajax リクエストを使用することによってのみそれを行うことができます。

高さが必要な理由が明確になるように質問を言い換えてください。そのための最良の方法を提案できます。


バックエンドとフロントエンドを相互リンクさせる方法の例:

これを page/test.php に貼り付け、 http://example/testを開いて動作を確認します

class page_test extends Page {
    function init(){
        parent::init();

        $b=$this->add("Button");
        $b->set("Get Width");
        $b->js("click")->univ()->ajaxec($this->api->getDestinationURL(), array("width" => $this->js(true)->_selectorWindow()->width()));
        $v=$this->add("View_HtmlElement")->setElement("div")->set("Click button to get width of the window");
        if ($w = $_POST["width"]){
            $v->js(null, $v->js()->html("Width: " . $w))->univ()->alert("Width: " . $w)->execute();
        }
    }
}
于 2011-09-17T08:11:50.257 に答える