javascript - 如何防止href默认行为更改URL名称Vue js
问题描述
在我的组件中,我安装了一个名为 vue2-smooth-scroll 的依赖项,它允许我根据 id 滚动到目标元素。这是实现这一目标的代码:
<a href="#test" class="mouse-icon" @click.prevent="preventDefault" v-smooth-scroll>
我能够滚动到 ID 为 #test 的元素,如以下代码所示
<div id="test"></div>
但是,我注意到 id “test” 将附加在 URL 的末尾。你如何阻止这种情况发生?例如,
解决方案
防止 href 默认行为更改 URL。您可以侦听单击事件然后调用preventDefault
,或者在 VueJS 中您可以添加阻止单击修饰符。
就像:
<a href='#test' @click.prevent>Anchor</a>
但这不适用于您的情况,因为vue2-smooth-scroll
故意在 URL 上设置哈希。正如您在第48行和第70行的源代码中看到的那样。
所以你可以把它弄回来,但它需要在动画完成之后。
<template>
<a href='#test' @click='setUrlBack' v-smooth-scroll>Anchor</a>
</template>
<script>
setUrlBack () {
setTimeout(() => {
history.replaceState(null, null, ' ')
}, 550) // animation duration + a little delay
}
</script>
嗯,这是一个非常糟糕的主意。
另一种选择是要求作者添加诸如no-hash
属性之类的支持。
或者只是创建自己的插件文件,然后复制代码,粘贴并修改它。
推荐阅读
- c# - Mysql定界符语法错误只会在c#上出错
- amazon-web-services - Fargate ThrottlingException Rate exceeded
- scala - 词法分析器没有得到下一个字符
- python - Pyinstaller:没有这样的文件或目录:'.xlsx'
- javascript - 谷歌工作表脚本将一周添加到工作表中的日期
- flutter - How can I disable texformfield input in flutter?
- python - 类型错误:“浮动”对象不可调用
- mysql - 需要根据其他列的值更新表中的新列
- c# - Regex.Replace 与组重复输出?
- git - 在 Git 中压缩提交的最佳策略