2017-09-09 11 views
0

Ich versuche, ein div deren Klassennamen zu klicken ist (xyz)Uncaught Typeerror: kann nicht lesen Eigenschaft 'Klick' von null

document.querySelector('.header-search-wrap').click();
<iframe src="https://www.gammerson.com" frameborder="0" width="500px" height="900px"> 
 
\t </iframe>

so habe ich versucht, unter Dokument laufen laufen .querySelector ('. xyz'). click(); aber es gibt mir

error Uncaught TypeError: Cannot read property 'click' of null 

aber wenn ich auf Elemente Fenster und der Suche nach XYZ-Klasse gehen und dann wieder zurück Fenster von Chrom zu trösten und unter Code wieder

document.querySelector('.xyz').click(); 

überraschenderweise funktioniert es laufen . Ich weiß nicht, was das Problem ist, kann mir jemand helfen, das Problem zu lösen. Ich habe mehrere Male versucht, es funktioniert nur, wenn ich Quellcode im Elementfenster öffnen und dann den Code ausführen.

+0

Wenn es kein solches Element gibt, ist das Ergebnis von 'document.querySelector ('. Xyz')' 'null' und dies wird diesen Fehler verursachen, da Ihr Code tatsächlich' null.click() 'enthält. Sind Sie sicher, dass Sie ein solches Element in Ihrer Seite haben? Können Sie ein funktionierendes Beispiel erstellen? snippet/jsfiddle ... – Dekel

+0

Können Sie Ihre Frage mit HTML Markup aktualisieren? –

+4

Es klingt, als ob Sie das Skript laden, bevor die Seite geladen wird. Versuchen Sie, das Skript vor das schließende body-Tag zu setzen oder in das window.onload = function() {/ * here * /} –

Antwort

0

einfach, wenn Sie laufen

document.querySelector('.xyz'); 

Und wenn es sagt null das bedeutet zu diesem Zeitpunkt gibt es keine Elemente mit Klasse xyz so Aufruf klicken() auf null Ergebnisse Fehler.

+0

jsfiddle.net/ktvvgx4n überprüfen Sie diese jsfiddel das gleiche tun, dass mit diesem Beispiel. Wenn Sie die Konsole öffnen, wird Ihnen Uncaught TypeError angezeigt: Kann die Eigenschaft 'click' von null nicht lesen, aber wenn Sie nach allen .header-search-wrap in der Registerkarte Elemente suchen und dann document.querySelector ('. Header-search-wrap ').klicken(); es zeigt dir nur undefiniert das heißt es funktioniert. –

1

Sie können ein Element auswählen, indem Sie das Dokument wie document.querySelector()abfragt, wenn das Element ein Kind in einem iframe ist; wenn Sie wollen, müssen Sie abrufen seine document: Javascript - Get element from within an iFrame

Aber die andere Sache ist, dass Sie nicht ein iframe zugreifen können, die nicht im gleichen Ursprungs ist (gut, ich denke, Sie haben nicht angegeben), da die "Same Origin Policy" gilt: SecurityError: Blocked a frame with origin from accessing a cross-origin frame


Und über Ihre statament:

When you open the console it will show you Uncaught TypeError: Cannot read property 'click' of null but when you search for all .header-search-wrap in elements tab and then again execute document.querySelector('.header-search-wrap').click(); it will show you only undefined this means it works

Dies geschieht, weil wenn Sie ein Element in besagte iframe der DevTools '"Kontext" (Chrome Dev Tools: <page context> and <top frame>?) Änderungen an der iframe überprüfen und Sie document.querySelector() frei verwenden können.

+0

also gibt es keine Möglichkeit, es zu tun? –

+0

@DavidCring Wenn Sie nicht auf der gleichen Domain sind: nicht wirklich, zumindest für gammerson.com, könnten andere Domains funktionieren, wenn sie Cross-Ursprungs über 'Access-Control-Allow-Origin'-Header erlauben. – yuriy636

Verwandte Themen