0

我想让 history.js 在我的主页上工作:http ://www.dinomuhic.com/2010/index.php

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

我的主页是自编码的,所以没有 cms、Wordpress 之类的。整个站点是这样工作的:无论你点击什么都有一个 ID,这个 ID 被发送到sndReq函数,然后内容就会出现。

例如,当您单击“运动”链接时,正在发送的内容

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

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

现在我所做的就是将 history.js 脚本链接到我的索引页面,如您所见,并将这一行添加到我的 sndReq 函数中:

History.pushState( {state:1}, "DinoMuhic.com - "+label, "?="+req );

我什么也没。意味着我没有为 history.js 添加任何其他代码行。

所以已经起作用的是它将正确的字符串附加到url。单击 Motion 按钮会生成如下所示的 URL 字符串:

http://www.dinomuhic.com/2010/index.php?=k001

这很好,因为这是可收藏的,并且仅发送 ID 也可以工作并显示正确的内容。

当我按下后退按钮时,它也会将字符串替换为之前的字符串。但它不会再次触发 sndReq 函数,因此最后一次点击的内容也会出现在屏幕上。URL 字符串会更改,但内容不会更改。

我只需要让 history.js 保存 sndReq 函数调用,并在再次按下后退或前进按钮时再次调用它们。

我希望我能充分解释一切。

如果它会让您的一切变得更简单,只需假设我只是发送 ID 而不是其他 3 个用于谷歌分析的 var,因为它在仅发送 ID 而不是其余部分时也有效。

提前致谢

4

1 回答 1

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 在您单击链接时获得的输入。

然后你把这些数据交给 push state 命令

History.pushState( sndData, "DinoMuhic.com - "+label, "?="+req);

而且它有效;)我为它制作了一个额外的页面来测试它,它还没有在实时版本中。

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

于 2013-09-24T22:52:46.397 回答