クエリ文字列のアプローチを試してみましょう。
恒星のあるページで、この関数をタグ内のどこかに追加しますがscript
、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