获取history.js来触发一个函数

时间:2013-09-24 20:07:58

标签: javascript jquery function history.js

我想让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时才有效,而不是其他的。

提前致谢

1 个答案:

答案 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);

它有效;) 我做了一个额外的页面来测试它,它还没有在现场版本中。

测试网站:http://www.dinomuhic.com/2010/index0.php