锚点链接让我在Xenforo中记录根目录

时间:2013-02-23 21:24:23

标签: html anchor

我遇到的问题应该是一个非常简单的任务:创建一个BBCode标记来创建一个文本锚点,然后创建另一个标记来跳转到该文本锚点。

然而,事情正在发生,这导致我的主播跳转到网站的根目录。

这是BBCode生成的HTML:

<div id="section1">Section Header</div>
<a href="#section1">Goto Section Header</a>

然而,当它在实况页面中时,单击它会将我跳转到网站的根目录而不是当前页面。这是在Firefox和Chrome中测试的。我不知道我错过了什么。

这是一个实时样本页面,其中使用了BBCode(锚点源代码中的文本搜索section1)。 http://community.playstarbound.com/index.php?help/bb-codes

如您所见,点击“转到”下的链接会转到http://community.playstarbound.com/#section1,而不是http://community.playstarbound.com/index.php?help/bb-codes#section1

这个div和anchor标签有什么外部可以导致这个吗?

3 个答案:

答案 0 :(得分:3)

问题

浏览器似乎无法正确识别您网页的基本网址。因此,您的锚链接的相对URL当前被浏览器解释为

http://community.playstarbound.com/#some-anchor

实际上它实际的URL应该是

http://community.playstarbound.com/index.php?threads/expand-the-bb-code-selection.15492/#some-anchor

由于链接的URL与当前页面的URL不同,因此它会引导浏览器将其视为常规链接而不是当前页面中的内部锚点,从而将您重定向到您网站的根目录。

<强>解决方案

  1. 在锚链接中指定绝对路径。
  2. 修改:根据您的建议,更正网站base代码中指定的值。

答案 1 :(得分:1)

我如何解决它:

我无法更正base标记中指定的值。我无法指定绝对路径。相反,我做了一点javascript魔术。

<a href="javascript:;" onclick="window.location.hash = 'some-anchor';">

这解决了我的问题。

答案 2 :(得分:1)

在MVC之前的世界中,我们许多人使用的页内定位符肯定会导致MVC中的PITA。我使用了两种不同的修复程序:

  1. 如果您只是在使用'href =#'并且不需要它导航到任何地方,请使用jquery“ e.preventDefault”。如:

P

(我在脚本中已经看到足够的“ href ='#”“ ,所以我不再问了,也不问我为什么)。

  1. 如果要导航到页面中的其他位置,请添加类似的jQuery,但是您只需“返回false;”即可代替e.preventDefault()。例如,如果您有一个项目K = tf.reshape(tf.range(24),(4,2,3)) #array([[[ 0, 1, 2], # [ 3, 4, 5]], # # [[ 6, 7, 8], # [ 9, 10, 11]], # # [[12, 13, 14], # [15, 16, 17]], # # [[18, 19, 20], # [21, 22, 23]]]) P = tf.reshape(tf.constant([1,2,4,8]),(4,1)) K / tf.expand_dims(P,axis=-1) #array([[[0. , 1. , 2. ], # [3. , 4. , 5. ]], # # [[3. , 3.5 , 4. ], # [4.5 , 5. , 5.5 ]], # # [[3. , 3.25 , 3.5 ], # [3.75 , 4. , 4.25 ]], # # [[2.25 , 2.375, 2.5 ], # [2.625, 2.75 , 2.875]]]) 需要转到页面底部,则可以这样做,并且不应将您扔到“根目录”:

$('(Your attribute, class, and/or ID) a).click(function (e) {
  //whatever else you might want to do, i.e. highlight,etc...
  e.preventDefault(); //Prevent in-page anchor from navigating to root of site
});

修改它,但是您要转到底部以外的某个地方(例如另一个“ div”)-只需确保“返回false;”即可。

这两种方法中的任何一种都可以在“ vanilla” javascript中完成。我通常使用jQuery,因为它对我和其他许多人来说都更容易。