我正在使用GAS网络应用,当用户执行某些操作(例如点击特定的div)时,需要刷新其内容。
在客户端,我有这个脚本从onclick
调用google.script.run.withSuccessHandler(refreshCallback).myServersideFunction();
function refreshCallback(roomsPlus) {
var statusDiv = document.getElementById("status");
statusDiv.innerHTML = "Reloading...";
window.location.reload(true);
};
状态div变为“Reloading ...”所以我知道回调被调用,但它从不重新加载页面。 Caja或谷歌应用脚本是否会禁用页面刷新?还有另一种刷新页面的方法吗?
答案 0 :(得分:3)
Caja于2016年7月16日从Web App HtmlService中删除。
编辑结束
不幸的是,HtmlService使用的Caja清理引擎限制了对窗口对象的访问,阻止您以编程方式重新加载页面。这是服务的已知限制,我们正在努力更好地记录它。
答案 1 :(得分:3)
您需要做的就是使用:
window.open("https://script.google.com/macros/s/web_app_ID/dev",'_top');
我的原始答案有效,但不是必需的:
在Apps脚本Web应用程序中有一个程序化的“解决方法”来重新加载/刷新页面。它基于html链接标记重新加载页面的能力,以及JavaScript调用该标记上的click事件的能力。如果需要,您可以隐藏链接。
<button onmouseup="reloadTheWebApp()">Trigger the Link Tag</button>
<a id="testLink" style="display:none"
href="https://script.google.com/macros/s/script_ID/exec">Reload the Web App</a>
<script>
window.reloadTheWebApp = function() {
console.log('reloadTheWebApp ran');
var linkTag = document.getElementById('testLink');
linkTag.click();
}
</script>
最好实现一个简单的页面导航系统: