js如何实现历史记录?

JavaScript024

js如何实现历史记录?,第1张

在被浏览页面加入一段代码实现这样的功能:

根据页面标题和url写入locationStorage

写入时,只写入最后10条记录

在显示历史页面,读取locationStorage把历史记录显示出来

你的问题涉及到 Same Origin Policy(同源策略),这是一个关系到隐私和安全性的问题。任何浏览器都不会给你机会让你访问 **异域** 历史网址。

但是,如果这三个页面在同一域名下,你可以使用 Javascript 的 document.cookie 来记录每次访问的网址。

我写的例子需要4个文件,url_history.js,html1.html,html2.html,html3.html(三个 html 文件内容相同),代码写在空间(hi.baidu.com/keneks/item/50699e21f9300d0c72863e4d)

复制粘贴,将 url_history.js 和其它三个 html 文件放在一起,访问任何一个页面,点击任何链接,上面会自动显示曾经访问过的页面。

历史网址以 array 形式保存在 url_history 变量中,所以 url_history[0] 为上一个,url_history[1] 为上上一个,以此类推。

<input type='button' value='点击' onclick='clickCount()' />

<input type='button' value='查看当前用户点击次数' onclick='clickShow()' />

function clickCount(){

var UserName = <%=Session["UserName"]%> //aspx页面

var UserInfo = xmlDoc.createElement("UserInfo")

UserInfo.setAttribute("name", UserName)

}

function clickShow(){

var clickCount = 0

var xmlDoc = loadXml("TEST.xml")

for(var i = 0i<xmlDoc.getElementsByTagName("UserInfo").lengthi ++) {

var UserInfo = xmlDoc.getElementsByTagName("UserInfo")[i]

var UserName = UserInfo.getAttribute("UserName")

if(UserName == <%=Session["UserName"]%>){clickCount++}

}

alert("您点击了"+clickCount)

}

function loadXml (xmlFileName) {

var xmlFile = xmlFIleName

if (window.ActiveXObject) {

//IE

xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

xmlDoc.async = false

xmlDoc.load(xmlFile)

}

else if (document.implementation &&document.implementation.createDocument) {

//其他浏览器

xmlDoc = document.implementation.createDocument('', '', null)

xmlDoc.load(xmlFile)

}

else {

xmlDoc = null

}

return xmlDoc

}

//没测试过 你试试看