Existuje způsob, jakým lze z obslužné rutiny události Javascript zjistit, zda událost byla zrušena předchozí obslužnou rutinou? IE a další prohlížeče jako Chrome atd. mají event.returnValue
vlastnost, kterou lze testovat, ale zdá se, že FireFox žádnou takovou vlastnost nemá.
Zde je příklad scénáře, o kterém mluvím. Máte podobný formulář:
<form id="test" name="test" onsubmit="return false;" />
A připojíte k němu událost v Javascriptu pomocí addEventListener
/attachEvent
(pro stručnost vynecháno připojení). Událost potřebuje vědět, zda něco předcházejícího v řetězci vrátilo false nebo ji jinak zrušilo. Verze IE je taková:
function onSubmitHandler(e) { alert("event was cancelled prior to this handler: " + e.returnValue); }
Toto funguje v IE, Chrome atd., ale samozřejmě ne ve FireFox, protože nemá event.returnValue
. Hledal jsem na interwebech jiný způsob, jak to určit ve FireFoxu, a na nic jsem nepřišel. Existuje řešení tohoto problému, které nezahrnuje nastavení onsubmit
atribut formuláře přímo?
Odpověď
Tady je to kludge způsob, jak to obejít. Doufal jsem v čistou metodu vyhovující standardům, ale zdá se, že žádná neexistuje.
function onSubmitHandler() { // only called if the other onsubmit handlers succeed } // hook in submit var originalOnSubmit = form.onsubmit; form.onsubmit = function(e) { var ret; if (originalOnSubmit) ret = originalOnSubmit(); if (ret != false) { return onSubmitHandler(e); } };