【问题标题】:Handling History Changes In Google Apps Script Web App处理 Google Apps Script Web App 中的历史记录更改
【发布时间】:2020-03-22 17:13:21
【问题描述】:

我正在使用 Google Apps 脚本构建一个网络应用程序,希望复制一个多页网站,并且努力让历史记录更改来做我想做的事情。

我设置了使用google.script.history.push() 的事件侦听器的链接,如下所示:

document.getElementById('navPage1').addEventListener('click', function() {
  google.script.history.push({timestamp:new Date().getTime(),page:'page1'}, {page:'page1'})
});

当我单击此链接时,我看到 URL 会随着参数相应更新(即更新为 https://script.google.com/a/XXX/macros/s/XXX/dev?page=page1)。

然后我想在我的 HTML 文件中使用 google.script.history.setChangeHistory() 来检测这些更改并相应地加载内容。但是,该事件似乎根本没有触发。我目前设置它只是为了登录历史更改,但我什么也没看到:

google.script.history.setChangeHandler(function(e) {
  console.log('History Change Triggered');
});

我是否误解了这些应该如何使用?

【问题讨论】:

    标签: javascript google-apps-script web-applications browser-history


    【解决方案1】:

    documentation所写,

    调用 history.pushState() 或 history.replaceState() 不会触发 popstate 事件。 popstate 事件仅通过执行浏览器操作触发,例如在同一文档的两个历史记录条目之间导航时单击后退按钮(或在 JavaScript 中调用 history.back())。

    相关答案:

    Sample web app

    【讨论】:

    • 谢谢,这更有意义。我查看了示例 Web 应用程序并且无法复制它(我需要在没有 jQuery 的情况下进行)。据我了解,这会将基本 URL 设置为脚本 URL,通过 href 附加一个片段,这会触发处理程序?当我实现这个时,我收到一条错误消息“拒绝在框架中显示'script.google.com/a/macros/xxx/s/xxx/dev#page1',因为它将'X-Frame-Options'设置为'sameorigin'。”
    • @apk 将基本目标设置为 _top
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2019-07-21
    • 2012-07-21
    • 2012-07-14
    相关资源
    最近更新 更多