Предотвращение дефолта, внесение изменений и продолжение рутины

У меня есть небольшой сайт со сценарием, который выполняет запрос с помощью MySQL и возвращает мне некоторые данные, включая домены. Эти домены сгенерированы HTML-ссылки, и я хочу изменить в JavaScript, так как я не могу получить доступ к части PHP, но да, чтобы JavaScript и CSS-код.

Я просто хочу, чтобы вы запускали код, когда по ссылке запускается событие click. Я попытался остановить выполнение по умолчанию и внести изменения, но мой код не открывает страницу. Если я удаляю protectDefault работает только в Firefox, но у меня нет Chrome. (не использовать window.open, я хочу изменить исходную ссылку).

var domains = document.getElementsByClassName("domain");

for(var x = 0; x < domains.length; x++){
    if(domains[x].addEventListener) {
        domains[x].addEventListener("click", changeLink, "false");
    } else if(domains[x].attachEvent) {
        domains[x].attachEvent("onclick", changeLink);
    }
}

function changeLink(evt){

    var urlOriginal = this.href;

    // If I remove preventDefault, the function runs correctly on firefox but not in chrome
    evt.preventDefault();

    if(urlOriginal != 'http://google.com') {

        urlOriginal = urlOriginal.replace(/http:\/\//g, '');

        evt.stopPropagation();

        this.href = 'http://intodns.com/' + urlOriginal;

        console.log('Okay !');

    }

    return true;
}

Я перепробовал несколько изменений, но ни один не запущен, не совсем так.

Кто-нибудь знает причину неисправности? Как я могу это исправить без window.open?

Спасибо

2 ответа

Пытаться stopPropagation вместо

http://api.jquery.com/event.stoppropagation/ - узнайте больше об этом

Если я правильно понимаю, вы хотите перенаправить пользователя на другую ссылку вместо той, которая установлена ​​в href приписывать.

Однажды click сделано, ничего не произойдет, если вы измените href атрибут элемента. То, что вы ищете, это перенаправление пользователя, и это стало возможным благодаря изменению location объект, который находится на window,

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

this.href = 'http://intodns.com/' + urlOriginal;

Попробуй это:

window.location = 'http://intodns.com/' + urlOriginal;
Другие вопросы по тегам