让我们尝试查询字符串方法。
script
在带有 stellar 的页面上,您将在标签内但在 jQuery 之外的某个位置添加此函数(来自此处$(document).ready()
的脚本):
function getParameterByName(name){
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.search);
if(results == null)
return "";
else
return decodeURIComponent(results[1].replace(/\+/g, " "));
}
在你的$(document).ready()
这个脚本上(最好是在一切之后,特别是恒星):
var slideToGo = getParameterByName('slide');
slideToGo = parseInt(slideToGo); //try make it a number
if($.type(slideToGo) == 'number'){ //make sure is a number
var delay = setTimeout(function(){
$('#navigation ul').find('li[data-slide='+slideToGo+'] .item a').click();
},500);
}
因此,每次访问带有视差的页面时,此脚本都会?slide=
在 URL 的查询字符串中查找 。如果找到它(并且是一个字符串且非空),将尝试找到与 中data-slide
的数字相等的 LI,?slide=
然后单击它的锚点。
我认为这可能有效。我添加了一点 setTimeout 来给 stellar 渲染一些时间。onComplete
如果它有一个事件或类似的东西,我在它的文档中找不到。会好很多,但既然似乎没有,让我们试试这种方式。
当然,在静态页面上,链接将是pagewithstellar.html?slide=NN
NN 是您要返回的数据幻灯片的编号。
更新:
如果您真的想使用哈希(例如:parallaxpage.html#slide-4),您需要以下内容(然后将上面的代码与下面的代码交换):
function getSlideNumberInHash() {
var hash = document.URL.substr(document.URL.indexOf('#')); //returns #slide-N
var slideNumber = hash.substr(hash.indexOf('-')+1); //returns -N. The +1 will make it return N
return slideNumber;
}
var slideToGo = getSlideNumberInHash();
slideToGo = parseInt(slideToGo); //try make it a number
if($.type(slideToGo) == 'number'){ //make sure is a number
var delay = setTimeout(function(){
$('#navigation ul').find('li[data-slide='+slideToGo+'] .item a').click();
},500);
}
因为这个评论,我使用document.URL.substr
了而不是。我们不使用 iframe,但如果有一天需要,我们会更好地防止 :P)window.location.hash