【发布时间】:2016-09-18 15:51:07
【问题描述】:
使用以下代码:
function _launchIntoFullscreen (pElement) {
if(pElement.requestFullscreen) {
pElement.requestFullscreen();
} else if(pElement.mozRequestFullScreen) {
pElement.mozRequestFullScreen();
} else if(pElement.webkitRequestFullscreen) {
pElement.webkitRequestFullscreen();
} else if(pElement.msRequestFullscreen) {
pElement.msRequestFullscreen();
}
}
我可以将单个元素切换到全屏模式,例如对于名为“canvas”的 dijit.form.ContentPane
_launchIntoFullscreen(canvas.domNode);
工作正常,但不幸的是,对于 Chrome,该元素的大小未调整为填充所有全屏窗口。大小保持不变,并在屏幕上居中。
我在 CSS 中添加了以下内容:
:-webkit-full-screen {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
background: none;
}
但唯一变化的是位置,现在是左上角,但大小还是一样。
补充信息:页面结构是
<div class="page-wrapper" style="width:100%; height:100%;">
<div id="toolbar" class="toolbar"></div>
<div id="borderContainer" data-dojo-type="dijit/layout/BorderContainer" design="sidebar" persist="false" gutters="true" style="min-width: 1em; min-height: 1px; z-index: 0; width: 100%; height: 100%; padding: 0px 0px 32px 0px;">
<div id="projectPane" data-dojo-type="dijit/layout/ContentPane" extractContent="false" preventCache="false" preload="false" refreshOnShow="false" region="left" splitter="true" maxSize="Infinity" doLayout="true" style="width: 220px; padding: 0px;">
<div data-dojo-type="dijit/layout/TabContainer" style="width: 100%; height: 100%; padding: 0px;">
<div id="treeParent" class="treeParent" data-dojo-type="dijit/layout/ContentPane" title="Palette" data-dojo-props="selected:true" style="padding:0px;"></div>
<div id="onlineParent" class="treeParent" data-dojo-type="dijit/layout/ContentPane" title="Online" data-dojo-props="selected:false" style="padding:0px;"></div>
</div>
</div>
<div id="workAreaContainer" data-dojo-type="dijit/layout/ContentPane" extractContent="false" preventCache="false" preload="false" refreshOnShow="false" region="center" splitter="false" maxSize="Infinity" doLayout="true" style="padding: 0px;">
<div id="workArea" class="workArea" data-dojo-type="dijit/layout/TabContainer" style="width: 100%; height: 100%; padding: 0px;" data-dojo-props="tabPosition: 'right-h'">
</div>
</div>
<div id="bottom" data-dojo-type="dijit/layout/TabContainer" extractContent="false" preventCache="false" preload="false" refreshOnShow="false" region="bottom" splitter="true" maxSize="Infinity" doLayout="true" style="width: 100%; height: 10%; padding: 0px;">
<div id="log" class="log" title="Log" data-dojo-type="dijit/layout/ContentPane" extractContent="false" preventCache="false" preload="false" refreshOnShow="false" maxSize="Infinity" doLayout="false" style="height:100%;padding:0px;overflow:auto;"></div>
</div>
<div id="properties" class="properties" data-dojo-type="dijit/layout/ContentPane" extractContent="false" preventCache="false" preload="false" refreshOnShow="false" region="right" splitter="true" minSize=0 maxSize="Infinity" doLayout="false" style="width:250px;padding: 0px;"></div>
</div>
</div>
画布是动态创建的:
var lTabContainer = dijit.byId("workArea");
var canvas = new ContentPane({
title: this.keys.pouname, //"Main",
//id: "surface",
class: "surfaceX",
extractContent: "false",
preventCache: "false",
preload: "false",
refreshOnShow: "false",
maxSize: "Infinity",
doLayout: "false",
"data-dojo-props": "selected:true",
style: "padding: 0px;"
});
lTabContainer.addChild(canvas);
我在这里做错了什么?
在 Firefox 中,即使没有 CSS,一切都会按预期运行。
非常感谢您让我深入了解解决方案。
【问题讨论】:
-
我已经尝试过了,它对我有用,在 Chrome 中也是如此。我使用 containerNode 而不是 divNode。您也可以尝试在 webkitRequestFullscreen() 之后手动调用窗格的 resize() 函数。
-
尝试使用 containerNode 而不是 domNode(在我的帖子中是一个错字)。还尝试调整CP的大小,也不起作用。我还在我的应用程序中尝试了一些其他元素(其他 ContentPanes,一个 Tree 控件),也没有调整大小。您能否发布适合您的代码。必须有区别(例如与 CSS)
标签: javascript google-chrome dojo webkit fullscreen