我正在嘗試創建自己的書籤,而且這樣做的數量並不是很多。基本上,現在我想弄清楚爲什麼我不能只做javascript:document.write(「HAI,WORLD」),它具有替換窗口內容的意想不到的效果。document.write在狀態欄
這是我從其他地方瞭解到,Javascript用方法的返回值替換窗口的全部內容,所以我也嘗試過javascript:void(document.write(「wut」)),但是整個窗口內容仍被替換。
我正在嘗試創建自己的書籤,而且這樣做的數量並不是很多。基本上,現在我想弄清楚爲什麼我不能只做javascript:document.write(「HAI,WORLD」),它具有替換窗口內容的意想不到的效果。document.write在狀態欄
這是我從其他地方瞭解到,Javascript用方法的返回值替換窗口的全部內容,所以我也嘗試過javascript:void(document.write(「wut」)),但是整個窗口內容仍被替換。
這是因爲頁面已經加載,它不知道,其中要寫入。使用document.documentElement.appendChild(document.createTextNode("HAI, WORLD"))
。
我試着理解你的「問題」,但我想你想讓它在新窗口中打開,對吧?
然後,你需要使用:javascript:window.open("<url to website>", "some title");
不,我不會。 – 2010-01-18 02:38:31
如果document.write()
被稱爲頁面加載完成後,該頁面的全部內容將被覆蓋。這是該功能的預期效果。
如果要動態修改HTML代碼,您有幾種選擇:
document.getElementById("foobar").innerHTML("baz")
document.getElementById("foobar").appendChild(document.createTextNode("baz"))
此外,你應該考慮像jQuery框架,它可以爲你處理很多這樣的事情:
$("#foobar").html("baz")
個人而言,對於bookmarklets,我寧願不使用任何第三方框架,並將'javascript('function(){})()'包裝在''中以避免與頁面上已有腳本的潛在衝突。這是學習純粹的JavaScript派上用場的地方。 – slebetman 2010-01-18 02:16:11
你應該使用'document.body'因爲代替追加額外的元素,以''在技術上是無效的。 – 2010-09-18 06:40:26
無法保證身體每次運行腳本時都會加載。此外,如果它*無效將節點添加到根節點,我會得到一個'DOMException.HIERARCHY_REQUEST_ERR'錯誤。 – 2010-09-18 19:28:01