2013-09-24 36 views
0

我想history.js在我的主页工作:http://www.dinomuhic.com/2010/index.php获取history.js火功能

我的主页的主要JavaScript代码是在这里:http://www.dinomuhic.com/2010/js/bunch.js

我的主页是自编码,所以没有CMS,Wordpress或其他。 整个网站的工作原理是这样的:无论您点击了什么ID,该ID都会发送到sndReq函数,然后显示内容。

当你点击例如在“运动”的链接这个事情正在发送

javascript:sndReq('k001','Main-Menue','Menue-Open','Motion') 

这4个瓦尔。首先是ID,然后是Google Analytics的3个变量以进行正确的跟踪。

现在我所做的是我联系的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

好吧,我想我想通了。

基本上我只是需要这样的:

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