2010-01-18 47 views
1

我正在嘗試創建自己的書籤,而且這樣做的數量並不是很多。基本上,現在我想弄清楚爲什麼我不能只做javascript:document.write(「HAI,WORLD」),它具有替換窗口內容的意想不到的效果。document.write在狀態欄

這是我從其他地方瞭解到,Javascript用方法的返回值替換窗口的全部內容,所以我也嘗試過javascript:void(document.write(「wut」)),但是整個窗口內容仍被替換。

回答

6

這是因爲頁面已經加載,它不知道,其中要寫入。使用document.documentElement.appendChild(document.createTextNode("HAI, WORLD"))

+0

你應該使用'document.body'因爲代替追加額外的元素,以''在技術上是無效的。 – 2010-09-18 06:40:26

+0

無法保證身體每次運行腳本時都會加載。此外,如果它*無效將節點添加到根節點,我會得到一個'DOMException.HIERARCHY_REQUEST_ERR'錯誤。 – 2010-09-18 19:28:01

0

我試着理解你的「問題」,但我想你想讓它在新窗口中打開,對吧?

然後,你需要使用:javascript:window.open("<url to website>", "some title");

+0

不,我不會。 – 2010-01-18 02:38:31

0

如果document.write()被稱爲頁面加載完成後,該頁面的全部內容將被覆蓋。這是該功能的預期效果。

如果要動態修改HTML代碼,您有幾種選擇:

  • document.getElementById("foobar").innerHTML("baz")
  • document.getElementById("foobar").appendChild(document.createTextNode("baz"))

此外,你應該考慮像jQuery框架,它可以爲你處理很多這樣的事情:

  • $("#foobar").html("baz")
+0

個人而言,對於bookmarklets,我寧願不使用任何第三方框架,並將'javascript('function(){})()'包裝在''中以避免與頁面上已有腳本的潛在衝突。這是學習純粹的JavaScript派上用場的地方。 – slebetman 2010-01-18 02:16:11

0

耶以利亞說,或者如果你想改變瀏覽器的狀態欄:

window.status = 'my new status' 
+0

請注意,我認爲Firefox默認禁用此功能。 – alex 2010-01-18 01:37:30

+0

在Firefox中,您可以將disable_window_status_change設置爲false – jspcal 2010-01-18 01:40:20