Используя хеш плюс строку запроса в качестве якоря для веб-страницы, работающей на jquery? - PullRequest
3 голосов
/ 25 мая 2011

Вот моя ситуация.У меня есть веб-страница (не совсем законченная):

http://grapplingbasics.com/beta.php

У меня есть слайд страницы к определенному div, который помещает URL-адрес с хешем в строку URL.Если пользователь ссылается на этот URL-адрес, он может перейти на эту конкретную часть страницы.

Однако я хотел бы разрешить ему перейти на эту часть страницы И загрузить определенное видео с одним адресом.

Не похоже, что вы можете соединить строку запроса и хеш-код, например, так: www.blah.com/index.php#BLAH?neat=one

Первоначально я пытался превратить хеш вчасть строки запроса, а затем используя split в jquery, чтобы назначить ее в хэш на лету.Однако проблема в том, что если я верну false в nav, он не покажет строку запроса в строке URL, и если я не верну false, то он захочет перейти к чему-то, чего там нет!

Какое здесь возможное решение?

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Я создал небольшой пример для вас, который должен объяснить, как вы можете исправить это.

 <script type="text/javascript">

    function getParameterByName(name) {
        name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
        var regexS = "[\\?&]" + name + "=([^&#]*)";
        var regex = new RegExp(regexS);
        var results = regex.exec(window.location.href);
        if (results == null)
            return "";
        else
            return decodeURIComponent(results[1].replace(/\+/g, " "));
    }


    $(function () {
        $('a').click(function (event) {

            var thisHash = document.location.hash;

            $('body').animate({ scrollTop: $(thisHash).offset().top }, function () {
                if (getParameterByName('neat') != null) {
                    alert('I will play video ' + getParameterByName('neat'));
                }
            });
        });
    });

</script>

Html:

<a href='?neat=one#end'>Go</a>

<p id='end'>Imagine this is a panel you are going to in your example.</p>

В приведенном выше коде сначала есть функция getParameterByName, которая выглядитв ваш URL, чтобы найти пары значений строки запроса.и если он не равен NULL, он возвращает свое значение.

в разделе ниже, который ... представьте, что якорный тег - это ваша навигация, и я щелкнул по нему, затем страница анимируется в правильном разделе хеша.После завершения анимации в разделе обратного вызова запрашивается значение строки запроса.если вы установили значение «аккуратно», тогда ваш код для воспроизведения видео должен находиться там, где сейчас предупреждение.

1 голос
/ 25 мая 2011

Вы можете поместить строку запроса перед хешем: www.blah.com/index.php?neat=one#BLAH

Или для более сложного решения, посмотрите на аспект запроса jquery bbq Бен АлманаПлагин: http://benalman.com/projects/jquery-bbq-plugin/

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