Нужна помощь с синтаксисом jQuery для изменения URL - PullRequest
0 голосов
/ 01 августа 2011

Используя jQuery, можно ли сделать так, чтобы каждый http://www.mywebsite.com/page/ становился http://www.mywebsite.com/#page для посетителей и следил за тем, чтобы Facebook URL Linter (http://developers.facebook.com/tools/lint) все еще мог читать теги в http://www.mywebsite.com/page/?

Ответы [ 2 ]

0 голосов
/ 07 августа 2011
<script>
$(window).load(function(){
    var pieces = location.href.split('/');
    if (pieces[3].indexOf('#!') !== 0) {
        if (location.href.indexOf('#!') != -1) {
            pieces = location.href.replace('#!','').split('/');
        }
        pieces[3] = '#!/'+pieces[3];
        location.href = pieces.join('/');
    }
});
</script>
0 голосов
/ 01 августа 2011

Я не уверен, что полностью понимаю ваш вопрос. Клиентская библиотека не может изменить часть пути URL, не заставляя браузер загружать другую страницу с сервера.

Итак, если пользователь переходит на http://www.mywebsite.com/page/,, вы можете использовать клиентский JavaScript для перенаправления пользователя на http://www.mywebsite.com/#page/,, но это приведет к загрузке страницы браузером http://www.mywebsite.com/ и затем попытайтесь найти фрагмент #page на этой странице. Если вы хотите, чтобы браузер перезагрузил http://www.mywebsite.com/#page/,, то это действительно то, что произойдет.

FB не будет запускать javascript на вашей странице, поэтому, если FB перейдет к http://www.mywebsite.com/page/,, это то, что он увидит (он не будет перенаправлен, как обычный браузер).

Если вы хотите выполнить принудительное перенаправление с помощью javascript, вы можете разместить этот код на своей странице:

var path = window.location.pathname;
if (path.search(/^\/page\/?$/) >= 0) {
    window.location.replace("http://www.mywebsite.com/#page/");
}

Этот код проверяет, является ли путь в URL-адресе страницы /page или /page/, и если да, то выполняется перенаправление.

...