Как добавить "#!" перед всеми URL для AJAX - PullRequest
1 голос
/ 11 сентября 2011

Я делаю Ajax-сайт, и я должен добавить ко всем URL "#!"дом (не работает для внешних URL) с моего сайта, когда посетитель нажимает на URL.Например, когда кто-то нажимает на URL http://mysiteajax.com/contact/ ", скрипт изменяет URL-адрес следующим образом:" http://mysiteajax.com/#!/contact / "

Я написал небольшой скрипт jQuery, но это не такработа:

   <script>
        var  base_url = "http://localhost/ajaxsite/";
        function link(href) {

        // Check if the URL is an internal url
        if(href.indexOf(base_url) !=-1 || href.indexOf('http://') == -1 || href.indexOf('https://') == -1) {
        href = href.replace(base_url,'');
        return base_url + '#!/' + href;
         }
        }

        // Changes the link when someone clicks
        $(document).ready(function () {
        $('a').click(function() {
        $('a').attr('href', link(this));
        });
        });
        </script>

Вы можете мне помочь?

Спасибо

1 Ответ

2 голосов
/ 11 сентября 2011

Вот некоторые проблемы, которые я вижу:

  • В фрагменте кода нет ajax
  • Вы передаете элемент привязки-тега в link (), а не в href
  • Это не повлияет на сканеры страниц, поскольку сканеры не выполняют JS
  • # и все, что после него не будет передано на ваш сервер

Если я предполагаю, что у вас где-то есть ajax, то это все равно не сработает по причинам 2 и 3 (при условии, что ваш запрос ajax должен быть отправлен в корень)

Изменить это:

$('a').attr('href', link(this));

к этому:

$(this).attr('href', link($(this).attr('href')));

Это немного сумбурно, но это единственный способ изменить только выбранный элемент, используя только jQuery-isms.

Я не вижу смысла делать это так, как вы. Если вы ищете это , я не думаю, что веб-сканеры Google интерпретируют JS (это займет слишком много времени в том масштабе, в котором они сканируют). Вам нужно будет поместить это в сам HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...