google.script.history 类(客户端 API)

google.script.history 是一个可与浏览器历史记录堆栈进行交互的异步客户端 JavaScript API。它只能在使用 IFRAME 的 Web 应用的上下文中使用。它不适用于插件或容器脚本上下文中的边栏和对话框。如需了解详情,请参阅有关在 Web 应用中使用浏览器历史记录的指南

方法

方法返回类型简介
push(stateObject, params, hash) void 将提供的状态对象、网址参数和网址片段推送到浏览器历史记录堆栈。
replace(stateObject, params, hash) void 将浏览器历史记录堆栈中的热门事件替换为提供的状态对象、网址参数和网址片段。
setChangeHandler(function) void 设置回调函数来响应浏览器历史记录中的更改

详细文档

push(stateObject, params, hash)

将提供的状态对象、网址参数和网址片段推送到浏览器历史记录堆栈。状态对象是由开发者定义的简单 JavaScript 对象,可包含与应用的当前状态相关的任何数据。此方法类似于 pushState() JavaScript 方法。

Index.html

var now = new Date();
var state = {
  'timestamp': now.getTime()
};
var params = {
  'options': "none"
};
google.script.history.push(state, params, "anchor1");

参数

名称类型说明
stateObjectObject与浏览器历史记录事件相关联的开发者定义的对象,该对象会在状态弹出时重新显示。通常用于存储应用状态信息(如页面数据)供日后检索。
paramsObject包含与此状态相关联的网址参数的对象。例如,{foo: “bar”, fiz: “baz”} 相当于 "?foo=bar&fiz=baz"。或者,也可以使用数组:{foo: [“bar”, “cat”], fiz: “baz”} 相当于 "?foo=bar&foo=cat&fiz=baz"。如果为 null 或 undefined,系统不会更改当前网址参数。如果为空,则会清除网址参数。
hashString字符串网址片段出现在 '#' 字符后面。如果为 null 或 undefined,系统不会更改当前的网址片段。如果为空,则系统会清除网址片段。


replace(stateObject, params, hash)

将浏览器历史记录堆栈中的热门事件替换为所提供的(开发者定义)状态对象、网址参数和网址片段。这与 push() 完全相同。

Index.html

var now = new Date();
var state = {
  'timestamp': now.getTime()
};
var params = {
  'options': "none"
};
google.script.history.replace(state, params, "anchor1");

参数

名称类型说明
stateObjectObject与浏览器历史记录事件相关联的开发者定义的对象,该对象会在状态弹出时重新显示。通常用于存储应用状态信息(如页面数据)供日后检索。
paramsObject包含与此状态相关联的网址参数的对象。例如,{foo: “bar”, fiz: “baz”} 相当于 "?foo=bar&fiz=baz"。或者,也可以使用数组:{foo: [“bar”, “cat”], fiz: “baz”} 相当于 "?foo=bar&foo=cat&fiz=baz"。如果为 null 或 undefined,系统不会更改当前网址参数。如果为空,则会清除网址参数。
hashString字符串网址片段出现在 '#' 字符后面。如果为 null 或 undefined,系统不会更改当前的网址片段。如果为空,则系统会清除网址片段。

setChangeHandler(function)

设置回调函数,以响应浏览器历史记录中的更改。该回调函数只能将一个事件对象作为参数。

Index.html

google.script.history.setChangeHandler(function (e) {
  console.log(e.state);
  console.log(e.location.parameters);
  console.log(e.location.hash);

  // Adjust web app UI to match popped state here...
});

参数

名称类型说明
functionFunction要针对历史记录更改事件运行的客户端回调函数,使用事件对象作为唯一参数。

事件对象

字段
e.state

与弹出事件相关联的状态对象。此对象与在将弹出状态添加到历史记录堆栈的相应 push()replace() 方法中使用的状态对象相同。

{"page":2, "name":"Wilbur"}
e.location

与弹出的事件相关联的位置对象

{"hash":"", "parameter":{"name": "alice", "n": "1"}, "parameters":{"name": ["alice"], "n": ["1", "2"]}}