Хэши не должны вызывать перезагрузку страницы.Если вы используете jQuery для загрузки этой статьи, вы можете выполнить history.go (0) или window.location.reload, а затем использовать jQuery, чтобы найти хеш-тег и обработать (в событии load обновленной страницы).
$(document).ready(function(){
loadArticle = function(articleId){
// code to query/load the article
};
if (window.location.hash)
articleLoad(window.location.hash);
$('.articleLink').click(function(){
window.location.hash = $(this).attr('rel');
window.location.reload();
});
});
РЕДАКТИРОВАТЬ Я предполагаю, что вы идете по пути хэширования по той же причине, что и веб-сайты, такие как Facebook - для возможности закладки и индексации, несмотря на то, что вы используетеAJAX для плавной интеграции.
РЕДАКТИРОВАТЬ 2 Вот то, что я придумал, чтобы показать, что я имею в виду.Это загрузит хеш, который был передан через URL, и обработает все новые клики на новые статьи на странице.
<html>
<head>
<title>Article Viewer</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// loader function to serve up the correct article (pushes the article number to an iFrame
// so it can remotely load the article within the page
loadArticle = function(articleId){
// set the hash (incase it's called from a link instead of a page load)
window.location.hash = articleId;
// change the iFrame src to the actual path fo the article page (customize this to fit your needs)
$('#article-frame').attr('src','view_article.php?article='+articleId);
};
// check for a hash (#????) tag in the URL and load it (to allow for bookmarking)
if (window.location.hash)
loadArticle(window.location.hash.substring(1));
// attack a click event to all the links that are related to loading an article
$('.article-link').click(function(){
// grab raw article id from rel tag
var articleId = $(this).attr('rel');
// shove loading it off to the "loader"
loadArticle(articleId);
// cancel the navigation of the link
return false;
});
});
</script>
</head>
<body>
<ul>
<?php for ($a = 1; $a < 10; $a++) echo "<li><a href=\"view_article.php?article={$a}\" rel=\"{$a}\" class=\"article-link\">View Article {$a}</a></li>\r\n "; ?>
</ul>
<iframe id="article-frame" src="view_article.php?article=0" width="640" height="480">
This page uses frames, unfortunately your browser does not support them.
</iframe>
</body>
</html>