所以我试图将用户从html链接和元素id标签重定向到使用javascript的其他页面。我已经想出如何做一个单一的重定向,但是编写多个链接的代码时遇到了麻烦,这是我到目前为止所做的:
HTML:
<head>
<script type = "text/javascript" src="script2.js"></script>
</head>
<body>
<a href="nickname.html" id="redirect1">NickName</a>
<a href="salestax.html" id="redirect">Salestax</a>
<a href="http://www.w3schools.com" id="redirect2">W 3 Schools</a>
</body>
</html>
到目前为止我的外部脚本只有一个链接:
window.onload = initAll;
function initAll() {
document.getElementById("redirect").onclick = initRedirect;
}
function initRedirect() {
confirm("Go to Salestax page?");
window.location="salestax.html";
return false;
{
我是否只是生成更多函数并更改位置值,getElementById值和onclick值?
答案 0 :(得分:0)
onclick事件的一个好处是,如果你返回false,它将阻止浏览器转到HREF中定义的链接。如果你返回true,它将继续通过导航。如果使用此方法,则无需担心函数中的window.location,这会简化很多事情。所以你可以这样做:
<a href="salestax.html" onclick="return confirm('Go to Salestax page?');">Salestax</a>
如果他们想继续,我会提示他们。他们点击是,它会继续前进,就像他们正常点击链接一样,他们点击不会阻止他们导航。这样您就不必在HTML和JavaScript中复制链接的HREF。
你仍然可以动态绑定它,但是如果你是通过ID进行的,那么我并没有看到任何优势,只需在HTML中定义onclick。
答案 1 :(得分:0)
首先,除非您试图阻止用户丢失他们在当前页面上所做的更改,否则您不清楚为什么要创建此功能。但无论如何,这是标准/基本方法:
window.onload = function() {
document.getElementById("redirect").onclick = redirectConfirmation("Go to Salestax page?");
document.getElementById("redirect1").onclick = redirectConfirmation("Go to Nickname?");
};
redirectConfirmation = function(msg, urlOverride) {
return function() {
if ( confirm(msg) ) {
window.location = urlOverride || this.href || "#"
}
return false;
};
};
redirectConfirmation
可选择使用第二个参数,该参数可用于显式设置页面重定向到的URL;否则,它将默认为由被执行的锚标记的href
属性指定的URL(如果所有其他方法都失败,它将以“#”正常失败)。
如果您使用的是公共库,例如jQuery,则可以按如下方式简化事件注册:
$(function() {
$("#redirect").click( redirectConfirmation("Go to Salestax page?") );
$("#redirect1").click( redirectConfirmation("Go to Nickname?") );
});
答案 2 :(得分:-1)
更好的方法是执行类似下面的操作 - 这样,重定向用户的逻辑可以合理地靠近链接,因此当页面将人们带到其他地方时,查看源代码的人不会变得非常困惑。 / p>
<a href="nickname.html" id="redirect1" onclick="return initRedirect('Go to Salestax page?', 'nickname.html');">Some link</a>
外部脚本:
function initRedirect(message, url)
{
confirm(message);
window.location = url;
return false;
}