如何为我想要重定向的每个链接编写脚本

时间:2010-01-14 16:44:28

标签: javascript

所以我试图将用户从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值?

3 个答案:

答案 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;
}