【问题标题】:Google apps script location.reload in web appGoogle 应用程序脚本 location.reload 在网络应用程序中
【发布时间】:2013-01-18 10:19:28
【问题描述】:

我正在使用一个 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 更改为“正在重新加载...”,所以我知道回调被调用,但它永远不会重新加载页面。 Caja 或谷歌应用程序脚本是否禁用页面刷新?还有其他刷新页面的方法吗?

【问题讨论】:

    标签: javascript html google-apps-script reload window.location


    【解决方案1】:

    您需要做的就是使用:

    window.open("https://script.google.com/macros/s/web_app_ID/dev",'_top');
    

    我在下面的原始答案有效,但不需要:

    在 Apps Script Web App 中有一个程序化的“解决方法”来重新加载/刷新页面。它基于 html 链接标签重新加载页面的能力,以及 JavaScript 调用该标签上的点击事件的能力。您可以根据需要隐藏链接。

    • 在 HTML 中添加链接标签
    • 如果您愿意,可以隐藏链接标签
    • 在脚本标签中添加客户端代码以调用链接标签上的点击事件
    • 随心所欲地运行代码

    测试按钮:

    <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>
    

    最好实现一个简单的页面导航系统:

    Page Navigation Web App - Apps Script

    【讨论】:

    • 我已经实现了这个解决方案,如果我通过它的 exec 链接对其进行测试,它可以完美运行,但如果它嵌入到 Google Pages 站点中,它不会进入重新加载部分。为什么会这样?
    • 对不起,我不知道。
    • @AlanWells 非常感谢您提供此解决方案,正如 Benjamain 所提到的,它工作得很好,但是当我将它添加到 Google 网站时,重新加载部分不起作用。
    【解决方案2】:

    编辑

    Caja 已于 2016 年 7 月 16 日从 Web 应用 HtmlService 中删除。

    Native Sandbox Mode

    An Update to HTML Service

    编辑结束

    不幸的是,HtmlService 使用的 Caja 清理引擎限制了对窗口对象的访问,从而阻止您以编程方式重新加载页面。这是服务的一个已知限制,我们正在努力更好地记录它。

    【讨论】:

    • 那么,如何解决这个问题呢?刷新 GAS 页面?
    • 现在不再在 Apps Script Web Apps 中使用 Caja。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    相关资源
    最近更新 更多