问题是,您将在哪里保存访问过的链接?您不能只从数组中删除项目,因为这些值在您离开页面后不会保存,因此当您返回页面时,您将拥有完整的 urls 数组。您可以使用localStorage 来存储您的数据。您可以为每个链接创建一个对象,并在其内部使用 url 和 visited 等属性来检查页面是否已被访问。但是localStorage 不能存储javascript 对象,只能存储变量和JSON 字符串,但是您可以使用JSON.parse() 和JSON.stringify() 来解决它。实现可能是这样的(我写的很匆忙,它可能会写得更短更好,但它应该可以工作,我在 cmets 中写了一些解释):
// Store javascript object to localStorage
Storage.prototype.setObject = function(key, value) {
this.setItem(key, JSON.stringify(value));
}
// Get javascript object from localStorage
Storage.prototype.getObject = function(key) {
return JSON.parse(this.getItem(key));
}
// Your URLs with default visited values
var urls = [
{ name: "somesite1", url: "http://somesite1.com", visited: false },
{ name: "somesite2", url: "http://somesite2.com", visited: false },
{ name: "somesite3", url: "http://somesite3.com", visited: false },
{ name: "somesite4", url: "http://somesite4.com", visited: false }
];
// If there's no urls object in localStorage, call setDefault method
if (!localStorage.getObject("urls")) {setDefault();}
// Check all link objects. If all are visited, return true, else return false
function checkVisited() {
var counter = 0;
var getUrls = localStorage.getObject("urls");
for (var i = 0; i < getUrls.length; i++) {
if (getUrls[i].visited) {counter++;}
}
return counter === getUrls.length;
}
// Set defaults values to localStorage
function setDefault() {
localStorage.setObject("urls", urls);
}
// If all links are visited, set default values
// Then get random links until you find one
// that's not visited. When it's found, set it
// to visited in localStorage and redirect to it
function goSomewhere() {
if (checkVisited()) {setDefault();}
var getUrls = localStorage.getObject("urls");
var visited = true;
while(visited) {
var e = Math.floor(Math.random()*getUrls.length);
if (!getUrls[e].visited) {
visited = false;
getUrls[e].visited = true;
localStorage.setObject("urls", getUrls);
window.location = getUrls[e].url;
}
}
}
希望这会有所帮助。要查看有关 localStorage 的更多信息,请查看 MDN:https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
也适用于 JSON:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON