2012-02-10 5 views
1

私は素晴らしい作品次のコードを持っている: -AJAX/jQueryの/ PHP - ロードページのアンカー/ハッシュタグに依存

$('.ajax a').click(function() { 
    getpageajax(this.href); 
    return false; 
}); 

function getpageajax(getpage) { 
    if(getpage == "") { 
     //SET ERROR? 
     document.getElementById("main").innerHTML = ""; 
     return; 
    } 
    if(window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } else {// code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange = function() { 
     if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      document.getElementById("main").innerHTML = xmlhttp.responseText; 
     } 
    } 
    var urlarray = getpage.split('/'); 
    location.hash = urlarray[urlarray.length-1]; 
    xmlhttp.open("GET", "includes/AJAXgetpage.php?getpage=" + getpage, true); 
    xmlhttp.send(); 
}; 

を唯一の問題は、私はその後、アンカーリンクを読んで取得する方法が分からないということです私はブックマーク可能なページを作成するために(例えば#contact-us)作成します。

私は、次のまわりベースのソリューションを実行しようとしましたが、それはあなたの最初の例以外のハッシュを取得するには理想的な

<script> 
var query = location.href.split('#'); 
document.cookies = 'anchor=' + query[1]; 
<?php if (!$_COOKIE['anchor']) : ?> 
window.location.reload(); 
<?php endif; ?> 
<?php 
echo $_COOKIE['anchor']; 
?> 

答えて

1

未満と思われる、あなたはwindow.location.hash

// example url - http://www.mysite.com/blog/post#comments 
var hash = window.location.hash; // = "#comments" 

あなたを使用することができます必要に応じて、#の先頭を取り除くためにreplaceを使用することができます。

+0

もちろん、私はすでに持っている機能にアンカーを渡すだけです。 –

+0

モバイルブラウザでもう一度動作しません。クロームを含む... – monymirza

関連する問題