Jquery 如何确定GoogleSheets窗口大小

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”,以及其他一些方法。) 这里

在从包含Google Sheet的脚本启动的模式对话框中,是否有某种方法可以确定浏览器窗口或主机显示的大小?我希望能够将对话框的宽度设置为用户显示的百分比,以便支持各种机器

正常的jQuery技术,如
$(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