我想让history.js在我的主页上工作:http://www.dinomuhic.com/2010/index.php
我的主页的主要javascript代码位于:http://www.dinomuhic.com/2010/js/bunch.js
我的主页是自编码的,所以没有cms,Wordpress等等。 整个网站的工作方式如下:无论您点击什么都有ID,此ID都会发送到 sndReq 功能,然后会显示内容。
当您点击" Motion"链接这是发送的东西
javascript:sndReq('k001','Main-Menue','Menue-Open','Motion')
这是4个变种。首先是ID,然后是Google Analytics的3个vars,以便进行正确的跟踪。
现在我所做的是将history.js脚本链接到我的索引页面,你可以看到我将这一行添加到我的sndReq函数中:
History.pushState( {state:1}, "DinoMuhic.com - "+label, "?="+req );
我做了没有更多。意味着我没有为history.js添加任何其他代码行。
所以已经有效的是它将正确的字符串附加到url。 单击“运动”按钮会导致URL字符串如下所示:
http://www.dinomuhic.com/2010/index.php?=k001
哪个好,因为这是可收藏的,只发送ID也有效,并显示正确的内容。
当我按下后退按钮时,它也会替换之前的字符串。 但它没有做的是再次激活sndReq函数,因此最后一次点击的内容也会出现在屏幕上。 URL字符串更改但不更改内容。
我只需要让history.js保存sndReq函数调用,并在再次按下后退或前进按钮时再次调用它们。
我希望我能充分解释一切。
如果它能让你的一切变得更简单,那么我只想假设我只是发送了ID而不是谷歌分析的其他3个变量,因为它只在发送ID时才有效,而不是其他的。
提前致谢
答案 0 :(得分:1)
好的,我想我已经明白了。
基本上我只需要这个:
History.Adapter.bind(window,'statechange',function(){
var State = History.getState();
sndReq(State.data[0],State.data[1],State.data[2],State.data[3]);
});
这是每次按下后退按钮时调用功能的方法。这必须在$(function (){}
函数内部,因此它始终处于活动状态。
但是对于sndReq函数来获取显示正确内容所需的所有数据我将此行添加到我的sndReq函数
var sndData= new Array(req,category,action,label);
这只是一个数组,填充了单击链接时sndReq获得的输入。
然后将此数据提供给推送状态命令
History.pushState( sndData, "DinoMuhic.com - "+label, "?="+req);
它有效;) 我做了一个额外的页面来测试它,它还没有在现场版本中。