Pb со ссылкой target_blank с помощью Mootools - PullRequest
0 голосов
/ 11 февраля 2011

в архитектуре Joomla 1.6 я хочу применить target_blank ко всем внешним ссылкам с использованием window.location.hostname.

Мой (не очень красивый) код выглядит так: http://jsfiddle.net/Y54Me/

Но, как видно, это не относится, поскольку я хочу к определенному виду href, например, к href = "javascript:;".

Я был бы рад получить любой совет.

TKS.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2011

если ваши ссылки локально не содержат домен, вы можете просто настроить таргетинг на них с помощью 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.

0 голосов
/ 11 февраля 2011

В этой строке:

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

Изменить на

    if(link.hostname != window.location.hostname && !link.hostname.search('javascript:')) {
        link.addClass('external');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...