Javascript Pb与Mootools的目标_空白链接

Javascript Pb与Mootools的目标_空白链接,javascript,mootools,Javascript,Mootools,在Joomla 1.6体系结构中,我希望使用window.location.hostname将target_blank应用于所有外部链接 因此,我的代码(不是很漂亮): 但是可以看出,这并不适用于我想要的某种href,比如a href=“javascript:;” 我很乐意得到任何建议 TKS.在这一行: if(link.hostname != window.location.hostname) { link.addClass('external'); 改为 if(link.

在Joomla 1.6体系结构中,我希望使用window.location.hostname将target_blank应用于所有外部链接

因此,我的代码(不是很漂亮):

但是可以看出,这并不适用于我想要的某种href,比如a href=“javascript:;”

我很乐意得到任何建议

TKS.

在这一行:

if(link.hostname != window.location.hostname) {
    link.addClass('external');
改为

    if(link.hostname != window.location.hostname && !link.hostname.search('javascript:')) {
        link.addClass('external');

如果本地链接不包含域,您可以通过CSS2将其作为目标:

a[href^="http://"], a[href^="https://"], a[href^='javascript'], a[href^='#'] {
    background: url('http://code.google.com/webtoolkit/tools/gwtdesigner/userinterface/images/globe3.png') 100% 60% no-repeat;
    padding:  0 25px 0 0;
}
并通过$$的选择器进行匹配:

// 1.12
$$("a[href^='http://'], a[href^='https://'], a[href^='javascript'], a[href^='#']").addClass("external");

// or for mootools 1.2.5+ 
document.getElements("a[href^='http://'], a[href^='https://'], a[href^='javascript'], a[href^='#']").addClass("external").addEvent("click", somefunc);
无需循环、正则表达式、字符串操作等

否则,您可以通过以下方式过滤上述结果:

var hostname = "jsfiddle.net";

$$("a[href^='http://'], a[href^='https://'], a[href^='javascript'], a[href^='#']").filter(function(link) {
    return !link.get("href").contains(hostname);
}).addClass("external");
对于1.12(.getProperty而不是.get)


最后。与其将单击事件附加到它们,然后打开window.open,为什么不直接设置(“target”和“\u blank”)?在我看来,这是最具语义和简洁的方法。

为什么不检查href中的任何内容是否是有效链接,然后根据主机名和“#”检查它,如果不是主机名,则添加“external”,我将尝试第二种解决方案。顺便说一句,Joomla 1.6现在基于Moo 1.3。