2016-06-05 24 views
0

Ich versuche, ein Userscript zu schreiben, was mich automatisch auf einer Website anmeldet, die ich täglich benutze.Nur im Navteil nach Text suchen?

Ich möchte das Skript zuerst überprüfen, ob ich eingeloggt bin oder nicht, und den Rest nur ausführen, wenn ich ausgeloggt bin.

var content = document.body.textContent; 
var hasText = content.indexOf("Login")!==-1; 
if(hasText){ 
     document.getElementById("useremail").value = "[email protected]"; 
     document.getElementById("userpassword").value = "mypassword123"; 
} 

Mein Code fast funktioniert, hat es nur das Problem, das es für den „Login“ Text in der gesamten Quelltext suchen. Was normalerweise dort ist, auch wenn ich eingeloggt bin. Ich möchte den suchenden Teil nur im Nav (Menü) sehen. Wie könnte ich das tun?

Wenn ich ausgeloggt bin: eines der Menü (nav) Listing (li) ist "Login". Wenn ich eingeloggt bin, zeigt dieses Menü meinen Benutzernamen an (also keine Anmeldung im Nav Teil der Seite).

Und die Quelle der Website wie folgt aussieht:

<body> 
<section id="main-header" class="headersclass"> 
    <div class="container"> 
    <header> 
    <div class="menusdiv"> 
    <nav class="mainmenu"> 
     <ul> 
     <li class="menulisting"> 
     <li class="menulisting"> 
     <li class="menulisting"> 
     </ul> 
    </nav> 
    </div> 
    </header> 
    </div> 
</section> 
...random text of the site... 
...the word "Login" can appear anywhere... 
</body> 

Ich habe versucht, mein Skript erster Linie auf die Nächsten zu ändern, aber immer Fehler:

var content = document.body.nav.textContent; 

var content = document.body > nav.textContent; 

var content = document.body.section.div.header.div.nav.textContent; 

var content = document.querySelectorAll('nav').textContent; 

var content = document.getElementsByTagName("nav").textContent; 

var lookhere = document.getElementsByTagName("nav"); 
var content = lookhere.textContent; 

Antwort

2

Sie müssen dies nutzen übrigens:

var content = document.getElementsByClassName("mainmenu")[0].textContent; 

Oder wie, wie Sie versucht haben, den Zugriff auf:

Diese Funktionen geben eine HTMLNodeList zurück, die wie ein Array ist, müssen Sie das erste Element erhalten.

0

Entweder eine dieser sollte

var content = document.getElementsByClassName('mainmenu')[0].textContent; 

oder

var content = document.getElementsByTagName('nav')[0].textContent; 
arbeiten