2013-03-08 2 views
5

У меня есть этот маленький букмарклет:Почему добавление к innerHTML в закладке перезаписывает всю страницу?

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

Теперь, очевидно, должен взять самый первый div на странице, и добавить Чак Норрис в него.

Вместо этого, когда вы вставили в адресную строку, Чак Норрис перезаписывает страницу.

Почему это так?

Примечание: это не происходит на сафари ...

+0

Он не делает то, что вы говорите в Chrome/Win, при вводе в консоль JS. (Ввод в адресную строку не работает, потому что Omnibox.) – millimoose

+1

Я не уверен, почему это занижено. Он заменяет экран для меня на Chrome. – Malk

+0

Спасибо, @millimoose ... Не знал, что Omnibox сделает это ... и почему? – seanlevan

ответ

5

Вы не отменяете действие. добавить void 0; затем закончится.

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

По-видимому, существует целая куча рекомендаций для букмарклетов: http://subsimple.com/bookmarklets/rules.asp – millimoose

+0

Почему void() необходимо? – seanlevan

+0

Благодарим вас за ответ! :) и какая разница от void и возвращает false? – seanlevan

-1

Я не уверен, что точная проблема, но я получил это работает, делая TextNode и добавив его:

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