Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有Html基标记的Url哈希 window.location.hash_Javascript_Html_Hash_Base Tag - Fatal编程技术网

Javascript 带有Html基标记的Url哈希 window.location.hash

Javascript 带有Html基标记的Url哈希 window.location.hash,javascript,html,hash,base-tag,Javascript,Html,Hash,Base Tag,当使用javascript操作的链接时,我通常会执行以下操作: <a href="#">Link Text</a> 单击链接将导航到 http://example.com/# 而不是 http://example.com/dir/page# 如何修复此问题?请删除您的base标记,或者将您的href属性更改为完全限定。当您将base与a元素混合时,您观察到的是预期的行为。在onclick事件上返回false以禁用链接: <a href="#

当使用javascript操作的链接时,我通常会执行以下操作:

<a href="#">Link Text</a>
单击链接将导航到

http://example.com/#
而不是

http://example.com/dir/page#

如何修复此问题?

请删除您的
base
标记,或者将您的
href
属性更改为完全限定。当您将
base
a
元素混合时,您观察到的是预期的行为。

onclick
事件上返回
false
以禁用链接:

<a href="#" onclick="doSomething(); return false">Link Text</a>


(这只是一个内联操作的示例。但是尽量避免内联声明和使用的技术。)

如果没有适合非javascript用户的URL,那么不要使用
<代码>标记用于指向其他页面的链接


任何可见的HTML元素都可以有onclick,不会出现您描述的问题。

如果您倾向于使用a标记,另一种解决方案是不使用#作为href目标(如果您不指定a标记,则会导致跳转到页面顶部,我认为这是不可取的)。您可以做的是:

<a href="javascript:">Some Link that Goes nowhere</a>
HTML:

真正不是链接的东西

我过去也遇到过同样的问题。
我有一个链接希望为空,以链接到当前页面。
如果没有,这将只是一个
元素,带有
href=“#”

我的示例没有使用
base
html元素

<li>
    <a href="#"><div>The text of my Link</div></a>
</li>
  • 与我找到的解决方案相同的示例

    <li style="cursor: pointer !important;">
        <a href="#" style="pointer-events: none;"><div>The text of my Link</div></a>
    </li>
    
  • 此解决方案仅使用css禁用链接。 使用第一个css规则
    cursor:pointer!重要的我确保此链接具有正确的(针对我的情况)指针图标。
    使用第二条规则
    指针事件:无我确保此链接不可单击。

    您可以在下面找到有关此规则的更多信息。

    您只需从
    标记中删除
    href
    属性即可

    <a href="#"> => <a>
    
    =>
    
    OP指定“这样,当有人在页面加载之前单击链接时,不会发生可怕的事情”,这表明onclick处理程序尚未连接。内联javascript很难看,编辑后应该避免,这是渐进式增强造成的问题。问题是用户在添加额外的单击处理程序之前单击了“链接”。在这种情况下,没有办法避免链接导航。解决方案是使其不是一个链接,或者,当然,使其成为一个具有等效非javascript操作的链接。根据行动的不同,这可能是最好的解决方案。不要使用“foo.com”。见rfc 2606:我支持这项动议。如果它实际上不在任何地方,请使用a或其他非a的东西。但这对键盘用户有负面影响:现在你无法聚焦元素。使用/here有一个理由。同样的道理也适用于iOS上的移动用户。只有带有href属性的
    才会触发onclick,至少在我使用过的iOS版本中是这样。+1 Brad,您正在尝试解决一个不需要存在的问题。你真的需要使用base标签吗?参见Gumbo的评论,点击处理程序返回false会停止链接。javascript:通常最好避免使用URL。
    <span class="generic_link">Something that really isn't a link</span>
    
    <html>
    <head>
        <base href="http://example.com/" />
    </head>
    <body>
        <a href="./dir/page#">Link Text</a>
    </body>
    </html>
    
    <li>
        <a href="#"><div>The text of my Link</div></a>
    </li>
    
    <li style="cursor: pointer !important;">
        <a href="#" style="pointer-events: none;"><div>The text of my Link</div></a>
    </li>
    
    <a href="#"> => <a>