document.createTextNode() w IE 9

0

Mam pustą stronę ,np. http://html.comsci.us/examples/blank1.html i chcę dołączyć tekst node do strony. W FF robię to tak:

document.body.appendChild(document.createTextNode("tekst"));

i wszystko gra, wywietla się napis "tekst".

Niestety pod IE 9 robię to samo i zamiast napisu "tekst" wyswietla się "[object Text]" ,jakby typy się nie zgadzały.

Zauważyłem ,że kiedy do linijki w IE dopiszę na końcu alert(); to wszystko działa (z wyjątkiem efektu ubocznego w postaci wyskakującego okienka). Ale jaja!

javascript:document.body.appendChild(document.createTextNode("tekst"));alert("");
1

Zauważyłem ,że kiedy do linijki w IE dopiszę na końcu alert(); to wszystko działa (z wyjątkiem efektu ubocznego w postaci wyskakującego okienka). Ale jaja!

javascript:document.body.appendChild(document.createTextNode("tekst"));alert("");

więc nie wykonujesz tego kodu w konsoli ale w pasku adresu?
W takim razie cała strona zmienia się na to zwróci to wyrażenie wpisane w pasku adresu - gdybyś miał na tej stronie coś więcej to byś zauważył różnicę

Równie dobrze mógłbyś napisać:

javascript:"tekst"

różnica między firefoxem a IE jest taka że jeśli wyrażenie w pasku adresu dla firefoxa będzie czymś innym niż stringiem to firefox nie podmienia strony, a IE wywołuje metodę .toString() i podmienia

jako że funkcja appendChild zwraca dodany element (w tym przypadku textNode) a instrukcja:

document.createTextNode("tekst").toString();

zwraca [object Text] to właśnie taki napis pojawia się zamiast całej strony w IE
firefox natomiast nie podmienia strony bo zwrócony typ nie jest stringiem

żeby strona się nie zmieniła na to co zwróci wyrażenie, wyrażenie musi nic nie zwracać (void)
właśnie typ void zwraca funkcja alert, dlatego w obu przeglądarkach kod działa

jeżeli tworzysz tzw. bookmarklet czyli kod do wywołania w pasku adresu (z zakładki) to na jego końcu po prostu dodaj ;void(0)
jeżeli nie - to nie testuj kodu w pasku adresu

0

Dzięki, uratowałes moją aplikację! void(0); i wszystko gra.

1 użytkowników online, w tym zalogowanych: 0, gości: 1