1

我需要使用 ATK4 获取浏览器的窗口高度和宽度,这是一个带有 jquery 的轻量级 php 框架

得到这个的javascript是

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

由于agiletoolkit 与jquery 集成,我认为应该可以使用类似的东西来获得它

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

但这不起作用,而是当我传递要使用的 $height 变量时,在 HTML 源代码中我得到以下内容。

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

它根本不显示元素

我希望能够调用 jqplot 将图形的宽度设置为特定页面上用户浏览器的全宽。为此,我需要传递一个参数,即宽度:NNN,其中 NNN 是像素宽度。据我所知,jqplot 不支持百分比形式的参数,所以我不能说宽度:100%。此外,如果我在页面上设置一个 div 并添加图表,它也会忽略 div 的大小并仅创建一个 400 x 300 像素的小图表。

我创建了一个插件来使用 atk4 中的 jqplot,但这是我仍然需要解决的问题之一。我可以毫无问题地将高度和宽度作为参数传递,但如果没有指定参数,我希望它默认为全屏大小。

任何人都可以建议获取这些值的正确语法吗?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 回答