天天看點

document.write()用法

document.write() 方法可以用在兩個方面:頁面載入過程中用實時腳本建立頁面内容,以及用延時腳本建立本視窗或新視窗的内容。該方法需要一個字元串參數,它是寫到視窗或架構 中的HTML内容。這些字元串參數可以是變量或值為字元串的表達式,寫入的内容常常包括HTML标記語言。

    記住,在載入頁面後,浏覽器輸出流自動關閉。在此之後,任何一個對目前頁面進行操作的document.write()方法将打開—個新的輸出流,它将清 除目前頁面内容(包括源文檔的任何變量或值)。是以,假如希望用腳本生成的HTML替換目前頁面,就必須把HTML内容連接配接起來賦給一個變量,使用一個 document.write()方法完成寫操作。不必清除文檔并打開一個新資料流,一個document.write()調用就可完成所有的操作。

    關于document.write()方法還有一點要說明的是它的相關方法document.close()。腳本向視窗(不管是本視窗或其他視窗)寫完 内容後,必須關閉輸出流。在延時腳本的最後一個document.write()方法後面,必須確定含有document.close()方法,不這樣做 就不能顯示圖像和表單。并且,任何後面調用的document.write()方法隻會把内容追加到頁面後,而不會清除現有内容來寫入新值。為了示範 document.write()方法,我們提供了同一個應用程式的兩個版本。一個向包含腳本的文檔中寫内容,另—個向—個單獨的視窗寫内容。請在文本編 輯器中鍵人每個文檔,以.html檔案擴充名儲存,并在浏覽器中打開文檔。

<html>
<head>
<title>Writing to Same Doc</title>
<script language="JavaScript">
  function reWrite(){
    // assemble content for new window
    var newContent = "<html><head><title>A New Doc</title></head>"
    newContent += "<body bgcolor='aqua'><h1>This document is brand new.</h1>"
    newContent += "Click the Back button to see original document."
    newContent += "</body></html>"
    // write HTML to new window document
    document.write(newContent)
    document.close() // close layout stream
  }
</script>
</head>
<body>
  <form>
    <input type="button" value="Replace Content" onClick="reWrite()">
  </form>
</body>
</html>
    示例2中,情況有點複雜,因為腳本建立了一個子視窗,整個腳本生成的文檔都将寫入該視窗中。為了使新視窗的引用在兩個函數中保持激活狀态,我們将 newWindow變量聲明為全局變量。頁面載入時,onLoad事件處理調用makeNewWindow()函數,該函數生成一個空的子視窗。另外,我 們在window.open()方法的第三個參數中加入一個屬性,使子視窗的狀态欄可見。
    頁面上的按鈕調用subWrite()方法,它執行的第一個任務是檢查子視窗的closed屬性。假如關閉了引用視窗,該屬性(隻在較新的浏覽器版本中存 在)傳回true。如果是這種情況(假如使用者手動關閉視窗),該函數再次調用makeNewWindow()函數來重新打開那個視窗。
    視窗打開後,新的内容作為字元串變量組合在一起。與示例1一樣,一次性寫入内容(雖然對單獨的視窗沒有必要),接下來調用close()方法。但是注意一個重要的差別:write() 和 close()方法都明顯地指定了子視窗。
示例2 在另一個視窗中使用document.write()
<html>
<head>
<title>Writing to Subwindow</title>
<script language="JavaScript">
  var newWindow
  function makeNewWindow(){
    newWindow = window.open("","","status,height=200,width=300")
  }
  function subWrite(){
    // make new window if someone has closed it
    if(newWindow.closed){
      makeNewWindow()
    }
    // bring subwindow to front
    newWindow.focus()
    // assemble content for new window
    var newContent = "<html><head><title>A New Doc</title></head>"
    newContent += "<body bgcolor='coral'><h1>This document is brand new.</h1>"
    newContent += "</body></html>"
    // write HTML to new window document
    newWindow.document.write(newContent)
    newWindow.document.close()    // close layout stream
  }
</script>
</head>
<body onLoad="makeNewWindow()">
  <form>
    <input type="button" value="Write to Subwindow" onClick="subWrite()">
  </form>
</body>
</html>






P