【问题标题】:Adding to/editing the URL bar of a webpage without deleting what's already there.添加/编辑网页的 URL 栏而不删除已经存在的内容。
【发布时间】:2014-08-14 18:37:35
【问题描述】:

我需要在 URL 栏中添加一些文本而不删除已经存在的内容(正如我在标题中提到的那样)。基本上,我有八个左右的哈希值(/one/、/two/、/three/ 等)。

我必须将这些添加到 URL 栏中,而不删除之前已经存在的哈希值。例如,我可以有一个将“/two/”添加到 URL 的按钮,但如果“/one/”已经存在怎么办?我需要它来使它只在一个之后添加新的哈希,就像这样 - “/one/two/three/”。

我尝试过使用

<a href="/one/">Hide "one"</a><br/>

<a href="/two/">Hide "two"</a><br/>,

但不幸的是,当我在第一个之后使用第二个时,它只是将“/one/”替换为“/two/”。

任何建议都会很棒。如果我需要提供更多上下文,请告诉我,我不太确定我的代码中与这个问题有什么关系。

提前谢谢各位!

【问题讨论】:

  • 这是应该发生的,尤其是当您使用“本地绝对”路径 (/....) 时。

标签: javascript php html url


【解决方案1】:

你只需要使用一个函数

<a onclick="addHash('/one/');">One</a>
<a onclick="addHash('/two/');">Two</a>

function addHash( hash ) {
    window.location.hash = window.location.hash + hash;
}

您可能需要检查 addHash 函数是否已经存在,但这是一个很好的起点。

【讨论】:

  • 很好的答案,正是我想要的。感谢您提供直接的解决方案!
  • 您需要删除尾部或前导斜杠。否则会导致 #/one//one//one//one//one/
  • 是的,我必须以艰难的方式学习(没那么难,哈哈)。 @Samosa 我有一个问题。要工作,URL 必须在末尾有“#hash”,对吗?但是他们可能不会先点击“一个”按钮,所以我不能这样做,以便当他们点击一个按钮时,它会在 URL 中添加“#hash”。 JavaScript 中有没有办法检查 URL 中的“#hash”,如果不存在,添加它?谢谢。
  • 我不确定您所说的“要工作,URL 必须以“#hash”结尾”是什么意思。当您通过 window.location.hash 设置哈希时,它将检查哈希是否存在,如果不存在,它将添加然后添加哈希部分。
【解决方案2】:

也许对您在这里想要实现的目标进行更多描述? 您只是尝试显示 URL,还是尝试导航到带有这些参数的页面?

我确信 PHP 会用以下方法解决这个问题,但我不确定你为什么要使用它。

<a href="<?=$_SERVER['SCRIPT_NAME']?>/one">One</a>
<a href="<?=$_SERVER['SCRIPT_NAME']?>/two">Two</a>

如果你使用 jQuery,你可以这样做:

<a href="/one" class="addToUrl">One</a>
<a href="/two" class="addToUrl">Two</a>

<script>
    $(function(){
        $('.addToUrl').click(function(){
            var href = $(this).attr('href');
            window.location.href = window.location.pathname + href;
        });
    });
</script>

【讨论】:

    猜你喜欢
    • 2014-10-22
    • 1970-01-01
    • 2012-07-29
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多