Перехват / переопределение перенаправления Javascript - PullRequest
3 голосов
/ 17 октября 2011

Как мне переопределить / перехватить переадресацию JavaScript?

Например:

window.location.href="http://example.com";

Значение "http://example.com" будет обнаружено и, возможно, изменено.

Ответы [ 3 ]

5 голосов
/ 17 октября 2011

AFAIK вы можете поймать это событие, но вы не можете изменить целевой URL. Вы можете только запросить пользователя, если он хочет отменить перенаправление. Для этого вы можете подписаться на событие перед выгрузкой :

window.onbeforeunload = function (e) {
    var e = e || window.event;

    // For IE and Firefox prior to version 4
    if (e) {
        e.returnValue = 'Are you sure you want to leave the site?';
    }

    // For Safari
    return 'Are you sure you want to leave the site?';
};
1 голос
/ 17 октября 2011

Вы можете попробовать использовать __defineSetter()__, но это может не работать на хост-объектах.

0 голосов
/ 17 октября 2011

Найдите весь код, который использует это:

window.location.href="http://example.com";

и измените его следующим образом:

openURL("http://example.com");

Затем реализуйте эту функцию, где вы можете управлять перенаправлением, как вам бы хотелось:

function openURL(url) {
    // examine url and decide if you want to modify it
    window.location = url;
}
...