在窗口中预先设置URL.打开函数jQuery

Prefixing a URL in an window.open function jQuery

本文关键字:函数 jQuery URL 设置 窗口      更新时间:2023-09-26

我有这个HTML:

<a href="#" onclick="window.open('TrackPackage.asp?ID=4', '', 'settings');">Track Your Package »</a>

这个网站上的某个人能够为我提供一个脚本,在URL前面加上域http://www.example.com/。下面是脚本:

$(document).ready(function(){
$('a[onclick^="window.open(''TrackPackage.asp"]').attr('onClick', $('a[onclick^="window.open(''TrackPackage.asp"]').attr('onClick').replace("window.open('", "window.open('http://www.example.com/"));
});

但是,我遇到了一个小麻烦:
第一个问题是元素有多个实例的情况。这是一把小提琴:http://jsfiddle.net/VMmZx/
一个锚不是按预期用ID=4签名,另一个用ID=5签名,而是用ID=4签名
其想法是,每个window.open函数都应该以http://www.example.com为前缀,然而,URL的其余部分应该保持不变

我遇到的第二个问题是,当元素不在页面上时,jQuery的其余部分将失败
这是另一把小提琴:http://jsfiddle.net/VPf32/
<a>应该得到类foo,但由于页面上不存在该元素,因此jQuery不会执行
由于JavaScript包含在ASP.NET服务器的HTML模板中,这可能会产生许多问题

我希望我已经说清楚了,你可以帮我。谢谢

您可以使用.each()迭代每个匹配元素并分别更改它们:

$('a[onclick^="window.open(''TrackPackage.asp"]').each(function(index, element) {
    element = $(element);
    element.attr('onclick', element.attr('onclick').replace(/open'('/, 'open(''http://www.example.com/'));
});​

然而,我不认为使用#href和打开窗口的onclick的链接是语义上的

<a href="TrackPackage.asp?ID=4" target="_blank">Track Your Package »</a>

现在,如果有人好奇它会把他们带到哪里,当你悬停在浏览器上时,它可以在状态栏中显示一些有用的东西

如果需要进一步调整行为,请为click事件添加一个类和绑定。当他们点击时,阻止默认操作,并像以前一样自己打开窗口。

为什么要这样内联点击?我只会输出这样的链接:

<a href="/path/to/file.html" target="_blank">Link Text</a>

然后:

$('a[target=_blank]').click(function(){
   var prefix = 'http://domain.com';
   window.open(prefix + $(this).attr('href'));
});