2010-09-27 21 views
5

mam tę prostą linięgetElementById problemem w Google Chrome

alert(window.parent.frames[0].document.getElementById('textToSearch').value); 

mam 2 klatki, pierwszy z pola tekstowego z id „textToSearch” Chcę uzyskać wartość pola tekstowego w drugiej ramce Powyższa linia znajduje się na pliku html z drugiej ramki Otrzymuję ten błąd tylko w przeglądarce Google Chrome, w IE lub FF działa dobrze.

Uncaught TypeError: Cannot call method 'getElementById' of undefined

Jakieś pomysły?

góry dzięki

+0

Czy obie ramki znajdują się w tej samej domenie? – Matchu

+0

tak, obie ramki są zawarte na stronie indeksu – tinti

+0

co daje "alert (window.parent.frames.length)" i "alert (window.parent.frames [0] .toString())" daje? – JBRWilkinson

Odpowiedz

4

wreszcie zrozumieć na czym polega problem. Próbuję kodu z góry w Google Chrome w lokalnym pliku systemowym. Ze względu na ustawienia zabezpieczeń przeglądarki Google Chrome ta możliwość jest niemożliwa. Jeśli przeniosę wszystkie pliki na serwer WWW, to zadziała jako wdzięk Dzięki za wsparcie, ten wątek może być teraz zamknięty.

+1

Jesteś odpowiedzialny za zamknięcie wątku, zaznaczając odpowiedź (swoją lub kogoś innego) w odpowiedzi. –

+0

ok, przyjmuję tę odpowiedź jutro ... jako sugestię na etykiecie narzędzia – tinti

3

Korzystanie contentWindow.document zamiast document:

var frame = window.parent.frames[0].contentWindow; 
alert(frame.document.getElementById('textToSearch').value); 

Można też po prostu użyć contentDocument dla większości przeglądarek, ale nie Internet Explorer 7 lub starszy.

+0

Dzięki za odpowiedź ... ale nie zadziałał. Otrzymuję Nie mogę odczytać właściwości "dokumentu" niezdefiniowanego. Jeśli chcę zobaczyć, co jest w zmiennej "frame" z alertem, mam "undefined" – tinti

+0

@tinti: to dziwne. Nie ma * właściwości * dokumentu dla elementu iframe w Chrome, ale istnieją * contentWindow * i * contentDocument * properties. Jeśli znajduje ramkę, kod, który ci dałem ** powinien ** działać. –

+0

Nie wiem, czy jest to problem, ale używam ramki zamiast elementu iframe. tinti