2013-03-08 8 views
5

mam ten mały bookmarkletu:Dlaczego dołączanie do innerHTML w bookmarkletie zastępuje całą stronę?

javascript:document.getElementsByTagName("div")[0].innerHTML+="Chuck Norris"; 

teraz to oczywiście powinien do podjęcia bardzo pierwszy div na stronie i dodać Chucka Norrisa do niego.

Zamiast tego, po wklejeniu na pasku adresu, Chuck Norris nadpisuje stronę.

Dlaczego tak się dzieje?

Uwaga: to nie występuje na Safari ...

+0

Nie robi to, co mówisz w Chrome/Win, po wprowadzeniu do konsoli JS. (Wchodzenie w pasek adresu nie działa, ponieważ Omnibox.) – millimoose

+1

Nie jestem pewien, dlaczego jest to obniżone. Zastępuje ekran w Chrome. – Malk

+0

Dziękuję, @millimoose ... Nie wiedziałeś, że Omnibox to zrobi ... i dlaczego? – seanlevan

Odpowiedz

5

Nie anulujesz akcji. dodaj nieważne 0; na koniec.

javascript:document.getElementsByTagName("div")[0].innerHTML+="Chuck Norris";void 0; 
+1

Wygląda na to, że istnieje wiele zaleceń dotyczących skryptów do zakładek: http://subsimple.com/bookmarklets/rules.asp – millimoose

+0

Dlaczego void() jest potrzebny? – seanlevan

+0

dziękuję za odpowiedź! :) i jaka jest różnica między void i return false? – seanlevan

-1

Nie jestem pewien, co dokładny problem, ale mam to działa dokonując textNode i dołączenie go:

javascript:var d=document.getElementsByTagName("div")[0];var n=document.createTextNode("Chuck Norris");d.appendChild(n); 
Powiązane problemy