0

我有<a>onclick 事件:

<a href="#" onclick="window.open('TrackPackage.asp', '', 'location=1,menubar=1,scrollbars=1,status=1,resizable=1,width=635,height=460'); return false;" class="nounderline">Track Your Package »</a>

我怎样才能在这些 onclick 事件之前加上http://www.example.com这样的结果:

<a href="#" onclick="window.open('http://www.example.com/TrackPackage.asp', '', 'location=1,menubar=1,scrollbars=1,status=1,resizable=1,width=635,height=460'); return false;" class="nounderline">Track Your Package »</a>

它必须与 jQuery 1.4.2 兼容

其他人提到过这样的事情,但我无法让它在 1.4.2 中工作:

var link = $("a"); // I don't have enough info to tell you how to precisely get this instance
var originalOnClick = link.attr("onclick");
var part1 = "window.open('"; // this is always the same, right?
var part2 = originalOnClick.substr(part1.length); // the remainder, beginning with TrackPackage.asp
var newOnClick = part1 + "http://www.example.com/" + part2;

link.attr("onclick", newOnClick);

谢谢。

4

1 回答 1

1

我认为window.open()这里不是一个好主意。onclick它会被大多数弹出窗口阻止程序阻止,如果您使用的是 jQuery,则无论如何都不应该使用内联事件。
您尝试做的事情可能可以通过一个简单的锚链接来实现:

<a href="trackPackage.asp" target="_blank"></a>

然后你可以做这样的事情:

var prependUrl = function($link, url) {
    var oldUrl = $link.attr('href'),
        newUrl = url + oldUrl;
    $link.attr('href', newUrl);
}

prependUrl($('#yourLink'), 'http://www.example.com/');

编辑:

如果您无法控制 html 并且您需要这样做,请replace()onClick属性上使用,例如:

$('a').attr('onClick', $('a').attr('onClick').replace('window.open(\'', 'window.open(\'http://example.com/'));

示例:http: //jsfiddle.net/elclanrs/AH4As/

于 2012-02-14T00:23:51.060 回答