если ваши ссылки локально не содержат домен, вы можете просто настроить таргетинг на них с помощью 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");
http://www.jsfiddle.net/dimitar/Y54Me/1/ и http://www.jsfiddle.net/dimitar/Y54Me/2/ для1.12 (.getProperty вместо .get)
наконец.вместо того, чтобы прикреплять к ним события клика, а затем window.open, почему бы просто не сделать .set("target", "_blank")
вместо этого?это самый смысловой и чистый подход imo.