【问题标题】:Using hash plus querystring as an anchor for jquery fueled webpage?使用哈希加查询字符串作为 jquery 推动网页的锚?
【发布时间】:2011-09-01 08:58:18
【问题描述】:

这是我的情况。我有一个网页(未完成):

http://grapplingbasics.com/beta.php

我让页面滑动到一个特定的 div,它在 URL 栏中放置一个带有哈希的 URL。如果用户引用此 URL,他们可以点击页面的特定部分。

但是,我想允许他们点击页面的该部分并使用一个地址加载特定视频。

您似乎不能像这样将查询字符串和哈希处理放在一起:www.blah.com/index.php#BLAH?neat=one

最初我尝试将散列转换为查询字符串的一部分,然后在 jquery 中使用 split 将其动态分配到散列中。但是,问题在于,如果我向导航返回 false,它不会在 URL 栏上显示查询字符串,如果我不返回 false,那么它想导航到不存在的东西!

这里有什么可能的解决方案?

【问题讨论】:

    标签: php javascript jquery hash query-string


    【解决方案1】:

    我为你创建了一个小例子,它应该解释如何解决这个问题。

     <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,则返回它的值。

    在下面的部分中......想象锚标记是您的导航,我点击了它,然后页面动画到正确的哈希部分。一旦动画在回调部分完成,就会询问查询字符串值。如果您设置了“整洁”的值,那么您播放视频的代码应该位于警报所在的位置。

    【讨论】:

    • 非常感谢您的代码和您的时间。你能解释一下这里发生了什么,所以我知道如何实现它吗?
    【解决方案2】:

    您可以将查询字符串放在哈希之前: www.blah.com/index.php?neat=one#BLAH

    或者对于更复杂的解决方案,请查看 ben alman 的 jquery bbq 插件的查询方面: http://benalman.com/projects/jquery-bbq-plugin/

    【讨论】:

    • 这是一个很好的观点。我尝试将它们都放入散列值,然后使用拆分函数将视频的散列转换为“?=”。然而 ajax 不拉视频,我得到这个错误:输入的意外结束这与 ajax 处理页面 URL 的困难有关吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2013-06-05
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    相关资源
    最近更新 更多