Zajímavý IE JS BUG Zajímavý IE JS BUG rss twitter Zajímavý IE JS BUG

Zajímavý IE JS BUG

Dneska jsem narazil na jednu vlastnost Internet Exploreru (6,7,8...) při přesměrování pomocí JavaScriptu - řada z vás ji určitě léta zná, já na ni narazil poprvé.

Příklad: přesměrujete uživatele JavaScriptem (location.href=...) na jinou stránku. Problém nastává, když se chcete vrátit v prohlížeči IE zpět pomocí REFERERa, v PHP tedy například pomocí header("Location: ".$_SERVER['HTTP_REFERER']);.

Internet Explorer nepředává hlavičku HTTP_REFERER, pokud je přesměrování učiněno pomocí JavaScriptu, takže proměnná $_SERVER['HTTP_REFERER'] je, bohužel, prázdná. Není opraveno ani v nejnovější verzi IE8. Třebas je to vlastnost a ne bug, ale vývojáři na ni pohlíží dle diskuzí jako na bug.

Nicméně náprava je vcelku jednoduchá; do cílové adresy v location.href přidáme do GET požadavku i aktuální stránku, na které se uživatel nachází a později testujeme (v PHP např.), zda-li je HTTP_REFERER prázdný a pokud ano, zjistíme předchozí stránku parametrem GET.

HTML:

<span onclick="location.href='/nastaveni/?referer='+document.location.href;">klikni</span>

PHP:

if($_SERVER['HTTP_REFERER']=="") { $_SERVER['HTTP_REFERER'] = $_GET["referer"]; }
header("Location: ".$_SERVER['HTTP_REFERER']);

Ošetření a další omáčka kolem není součástí balení.


09. 10. 2009 02:48, 907× přečteno

Komentáře /0/



Přidat názor

// Jméno
// WWW
// Opak léta je…?

2010 © LukasChury.cz