Jquery 如何确定GoogleSheets窗口大小
在从包含Google Sheet的脚本启动的模式对话框中,是否有某种方法可以确定浏览器窗口或主机显示的大小?我希望能够将对话框的宽度设置为用户显示的百分比,以便支持各种机器 正常的jQuery技术,如Jquery 如何确定GoogleSheets窗口大小,jquery,google-apps-script,google-sheets,google-docs,Jquery,Google Apps Script,Google Sheets,Google Docs,在从包含Google Sheet的脚本启动的模式对话框中,是否有某种方法可以确定浏览器窗口或主机显示的大小?我希望能够将对话框的宽度设置为用户显示的百分比,以便支持各种机器 正常的jQuery技术,如$(window.width()和$(document.width()返回对话框的宽度,这不是我想要的(并且是此环境特有的) 尝试引用对话框外部的任何div容器都会返回null(我尝试了“#docs editor container”,“modal dialog bg”,以及其他一些方法。) 这里
$(window.width()
和$(document.width()
返回对话框的宽度,这不是我想要的(并且是此环境特有的)
尝试引用对话框外部的任何div容器都会返回null
(我尝试了“#docs editor container”
,“modal dialog bg”
,以及其他一些方法。)
这里有一个简单的脚本,用我到目前为止得到的结果重新创建这个对话框
代码.gs
Dialog.html
$(函数(){
reportSizeOf('window',$(window));//500-应为
reportSizeOf('document',$(document));//500-与窗口相同
reportSizeOf(“#文档编辑器容器“,$”(“#文档编辑器容器”);//null
reportSizeOf('modal-dialog-bg',$('modal-dialog-bg');//null
});
函数reportSizeOf(elname,element){
$(“#外部”).append(“+elname+”的宽度:“+element.Width());
}
您可以尝试使用CSS样式,在宽度=100%,高度=0%的情况下获得屏幕开发的DIV大小。然后使用document.getElementById(“容器”).OffsetSight
问题是,您只能在沙盒模拟模式(HtmlService.SandboxMode.simulated)上使用它
这里有一个例子():
代码.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('index')
.setSandboxMode(HtmlService.SandboxMode.EMULATED);
}
index.html
<style>
#container{
width: 100%;
/* height: 100%; */
background-color: #ccccff;
}
</style>
<div id="container">
</div>
<script>
alert(document.getElementById("container").offsetWidth);
/* alert(document.getElementById("container").offsetHeight); */
</script>
#容器{
宽度:100%;
/*身高:100%*/
背景色:#ccccff;
}
警报(document.getElementById(“容器”).offsetWidth);
/*警报(document.getElementById(“容器”).offsetHeight)*/
在本例中,您可以删除注释(/**/),并尝试获取高度大小
对于西班牙语和完整版本,请检查如果附加iframe的来源相同,我们可以跳出2个iframe,其中包括:
parent.parent.document.body.clientHeight
如中所述访问它
由于不是这样,文档可能需要一个增强请求,以便通过或其他一些跨源机制将最大大小传递到附加iframe上。将maxHeight
和width添加到现有的Browser
类可能更直接,但我认为这只是为了添加浏览器类型的小部件而设计的
设置大于所需的宽度确实会返回到“文档”窗口的最大宽度,但会导致用户无法看到“关闭”按钮,从而强制他们按esc键。如果您想要90%的文档最大高度/宽度视图,目前似乎不太可能。我过去没有这样的运气。我认为Caja不会传播任何关于实际浏览器窗口的知识。不确定您的控制逻辑,但是在对话框启动之前获取值,然后将值传递给openDialog()函数怎么样?@Fuhrmanator-如果我可以的话。加载后才确定大小,否则用户会坐在那里看一个空白屏幕(再点击几次),然后才会发生任何事情。渲染其中一个div可能需要30秒以上的时间。即使如此-如果我希望最大宽度保持在用户的显示范围内,我也无法知道这是什么。请快速尝试
警报(“窗口宽度”+$(窗口).width()+“文档”+$(文档).width())
在我的加载项的Sidebar.html(这不是服务器端)的document load函数中,我得到了Window width 300 document 850
,但我现在意识到你说的不是加载项。@Fuhrmanator:啊,但我说的是加载项。它有一个侧边栏和一个模式对话框。我已经在侧边栏的加载中添加了该警报,我得到了窗口宽度300文档300
。如果你真的这样做了,请将其作为答案发布。这个问题是关于电子表格中的模式对话框…你的答案是关于网络应用程序。。。这是两件不同的事情。你的答案根本不相关。Serge是对的-你的例子在模态对话框中不起作用。
<style>
#container{
width: 100%;
/* height: 100%; */
background-color: #ccccff;
}
</style>
<div id="container">
</div>
<script>
alert(document.getElementById("container").offsetWidth);
/* alert(document.getElementById("container").offsetHeight); */
</script>
parent.parent.document.body.clientHeight