如何使 HTML <a> 元素具有 href 但默认为 Onclick?
How To Make A HTML <a> Element Have A href But Default to Onclick?
我的 html 页面中有一个 <a>
。我在 JavaScript 中编写了一个自定义重定向器,因此当您单击该按钮时,它 运行 是一个 javascript 函数,可在重定向您之前执行重要任务。例如:
function go(page) {
alert("You are being redirected!")
// Important things here, such as saving
open(page, target="_self")
}
a {
color: blue;
text-decoration: underline;
cursor: pointer;
}
Link: <a onclick="go('/nextPage')">Click me to go to the next page!</a>
在上面的示例中,link 运行s 执行函数的脚本然后打开 URL。但是,如果您右键单击 link,则不会像其他 link 那样有 'open in new tab' 选项,因为它没有 href
。如果有 href
,它会在没有 运行 js 的情况下转到下一个选项卡。是否可以让它有一个 href,这样右键单击就可以了,但仍然是 运行 JS?所以基本上,它将授权给 onclick
事件,而不是 运行 宁 href
除非发生右键单击。
我尝试删除 onclick
并改用 href="javascript:go('/nextPage);"
,但右键单击导致它转到 chrome 中的 about:blank#blocked
。
不要使用 onclick
。相反,在阻止默认操作(通过 e.preventDefault()
)的所有锚标记上添加一个 click
事件侦听器,而是调用 go
函数。
function go(page) {
alert("You are being redirected!")
// Important things here, such as saving
open(page, target = "_self")
}
document.querySelectorAll('a').forEach((f) => {
f.addEventListener('click', function(e) {
e.preventDefault();
go(this.getAttribute('href'));
})
})
a {
color: blue;
text-decoration: underline;
cursor: pointer;
}
Link: <a href="https://stacksnippets.net">Click me to go to the next page!</a>
抱歉 HTML,我不得不尝试不同的编辑器来检查结果。
试试这个
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<script>
function go(page) {
alert("You are being redirected!")
// Important things here, such as saving
return false; // equivalent to preventDefault
}
</script>
<body>
<a href='http://www.example.com' onclick='return go()'>Click me to go to the next page!</a>
</body>
</html>
或
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<script>
function go(event) {
if( !confirm(`Redirect to ${event.target.href} ?`) )
event.preventDefault();
}
</script>
<body>
<a href='/example' onclick="go(event)"> Click me to go to the next page! </a>
</body>
</html>
我的 html 页面中有一个 <a>
。我在 JavaScript 中编写了一个自定义重定向器,因此当您单击该按钮时,它 运行 是一个 javascript 函数,可在重定向您之前执行重要任务。例如:
function go(page) {
alert("You are being redirected!")
// Important things here, such as saving
open(page, target="_self")
}
a {
color: blue;
text-decoration: underline;
cursor: pointer;
}
Link: <a onclick="go('/nextPage')">Click me to go to the next page!</a>
在上面的示例中,link 运行s 执行函数的脚本然后打开 URL。但是,如果您右键单击 link,则不会像其他 link 那样有 'open in new tab' 选项,因为它没有 href
。如果有 href
,它会在没有 运行 js 的情况下转到下一个选项卡。是否可以让它有一个 href,这样右键单击就可以了,但仍然是 运行 JS?所以基本上,它将授权给 onclick
事件,而不是 运行 宁 href
除非发生右键单击。
我尝试删除 onclick
并改用 href="javascript:go('/nextPage);"
,但右键单击导致它转到 chrome 中的 about:blank#blocked
。
不要使用 onclick
。相反,在阻止默认操作(通过 e.preventDefault()
)的所有锚标记上添加一个 click
事件侦听器,而是调用 go
函数。
function go(page) {
alert("You are being redirected!")
// Important things here, such as saving
open(page, target = "_self")
}
document.querySelectorAll('a').forEach((f) => {
f.addEventListener('click', function(e) {
e.preventDefault();
go(this.getAttribute('href'));
})
})
a {
color: blue;
text-decoration: underline;
cursor: pointer;
}
Link: <a href="https://stacksnippets.net">Click me to go to the next page!</a>
抱歉 HTML,我不得不尝试不同的编辑器来检查结果。
试试这个
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<script>
function go(page) {
alert("You are being redirected!")
// Important things here, such as saving
return false; // equivalent to preventDefault
}
</script>
<body>
<a href='http://www.example.com' onclick='return go()'>Click me to go to the next page!</a>
</body>
</html>
或
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<script>
function go(event) {
if( !confirm(`Redirect to ${event.target.href} ?`) )
event.preventDefault();
}
</script>
<body>
<a href='/example' onclick="go(event)"> Click me to go to the next page! </a>
</body>
</html>