我正在尝试在 Google 应用程序脚本中创建一个应用程序,但我想根据屏幕(移动和桌面)的分辨率显示不同的布局。但是,我找不到有关如何确定屏幕分辨率的任何信息。
当然,我无法从服务器端确定屏幕分辨率,所以我尝试了是否可以使用客户端处理程序做点什么,但是 ClientHandlers
没有任何屏幕分辨率的方法。我还尝试使用 app.createHTML()
将手动客户端脚本添加到应用程序中。 ,但是 Google 不允许使用 createHTML 包含 javascript。
那么如何使用 Google Apps 脚本获得浏览器的分辨率呢?
最佳答案
JavaScript screen.witdth属性在 GAS 环境中不起作用。位于 GAS 引擎盖下的 Google Caja sanitizer 会抛出
Uncaught script error: 'screen is not defined.' in source: 'tryit.asp?filename=tryjsref%5fscreen%5fwidth' at line: 7 tryit.asp?filename=tryjsref%5fscreen%5fwidth:7: screen is not defined.
将以下 HTML 页面加载到 Caja Playground 时出现异常.可能是Caja的问题。
<!DOCTYPE html>
<html>
<body>
<script>
document.write("Test");
document.write("Total Width: " + screen.width);
</script>
</body>
</html>
一种可能的解决方法是不依赖屏幕分辨率,而是使用用户代理字符串。该字符串包含用户浏览器“id”。 UiApp.getUserAgent方法返回它。例如,桌面上的 Mozilla Firefox 提供了这样的字符串 -
Mozilla/5.0 (Windows NT 6.0; rv:15.0) Gecko/20100101 Firefox/15.0.1,gzip(gfe)
.在手机上,此字符串包含 ...(Android; Mobile; rv:15.0)...
.检查过程在返回的字符串中搜索单词 Mobile
, Android
等。如果其中一个发现它是一个移动平台,并且主代码使用相对控件大小绘制一个移动 GUI。下面的代码展示了如何使用它function doGet(e) {
var app = UiApp.createApplication();
app.add(app.createLabel(UiApp.getUserAgent()));
return app;
}
关于google-apps-script - 谷歌应用脚本 : how to determine screen resolution?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12760135/