Ric*_*yST 8 html javascript seo vue.js
编辑:我忘了澄清,我正在寻找的是知道如何编写带有 href 属性的锚标记,但是当单击元素时,应忽略 href 并应执行单击处理程序。
我目前正在使用 Vue 1,我的代码如下所示:
<div v-if="!hasPage(category.code)">
<div>
<template v-for="subcategoryList in subcategoryLists[$index]" >
<ul>
<li v-for="subcategory in subcategoryList"v-on:click.stop="test()">
<a :href="subcategory.url">{{subcategory.label}}</a>
</li>
</ul>
</template>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想要做的是向用户展示一些代表我网站类别的按钮,其中一些按钮将引导用户到另一个页面,而其他按钮将切换带有子类别列表的下拉列表,当单击这些子类别时,您将带到子类别的页面。
这些将非常简单,但这些按钮需要由 Google 标签管理器跟踪,这就是为什么我使用 @click 属性来调用函数并忽略 href 属性的原因。这不起作用,我尝试过@click.prevent、@click.stop、@click.stop.prevent,但这些都不起作用。
问题是,如果我删除 href 属性,@click 方法效果很好,但 SEO 要求是在每个链接上都有 href 属性。
任何帮助,将不胜感激。
Søl*_*nøe 11
正如@dan-oswalt 在评论中指定的那样,您必须在与 href 相同的元素上添加 click 事件。它在您尝试时不起作用的原因很可能是因为您尝试了@click.stop
它只停止传播,而不是默认操作。(重定向到链接)。您想要的是防止浏览器重定向用户:@click.prevent
new Vue({
el: '#app',
data: {
subcategoryList: Array(10).fill({
url: 'http://google.com',
label: 'http://google.com'
})
},
methods: {
test(event) {
event.target.style.color = "salmon"
}
}
})
Vue.config.devtools = false
Vue.config.productionTip = false
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<main id="app">
<template>
<ul>
<li v-for="subcategory in subcategoryList">
<a :href="subcategory.url" v-on:click.prevent="test($event)">{{subcategory.label}}</a>
</li>
</ul>
</template>
</main>
Run Code Online (Sandbox Code Playgroud)