document.write() 清空覆蓋內容
document.write方法可以在文件中寫入指定的字串。
方法雖然比較簡單,不過其中也有很多知識點需要特別注意。
會面會通過程式碼例項對一些要點做詳細介紹。
語法結構:
[JavaScript] 純文字檢視 複製程式碼document.write(exp1,exp2,exp3,....)
引數解析:
(1).expN:可以按照指定順序一次性在文件寫入一個或者多個字串。
瀏覽器支援:
(1).IE瀏覽器支援此方法。
(2).edge瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).opera瀏覽器支援此方法。
(5).火狐瀏覽器支援此方法。
(6).safria瀏覽器支援此方法。
程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> document.write("本站url地址是"); </script> </head> <body> softwhy.com </body> </html>
上述程式碼可以在文件中寫入字串"本站url地址是"。
為了滿足實際需求,可能需要將內容寫入指定位置,程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> </head> <body> softwhy.com <script> document.write("是本站url地址"); </script> </body> </html>
上面程式碼會在網址後面插入指定的字串。
前面程式碼都比較簡單,應該沒有任何疑問,但是此方法有時候的表現會讓人匪夷所思。
看如下程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ document.write("www.softwhy.com"); } </script> </head> <body> 是本站的url地址 </body> </html>
上述程式碼的本意是在頁面生成一段完整的語句:
www.softwhy.com是本站的url地址,然而實際情況是頁面原來的內容被清空覆蓋。
看到上面的表現,首先是感覺怪異,第二個感覺操作挺危險的,如果使用不當可能會引起嚴重的問題。
下面就分析一下原因,由此可以避免再次發生上述類似問題:
(1).document.write方法的呼叫時機是文件內檔內容完全載入完畢之後。
(2).此時文件流已經關閉。
(3).當呼叫document.write方法的時候,會隱式呼叫document.open方法。
(4)document.open方法會新建立一個文件流,會覆蓋原來文件的內容,所以原來的內容被清空了。
由上面的結論引出新的問題:
既然執行document.write()會隱式呼叫document.open方法。
為什麼本文前兩個程式碼例項並沒有情況原有內容的現象內,原因分析如下:
(1).document.write方法執行的時候,文件流並沒有被關閉,且深處其中。
(2).此時並不會呼叫document.open方法建立一個新的文件流,否則就是多次一舉。
再來看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> document.close(); document.write("www.softwhy.com"); </script> </head> <body> <div>螞蟻部落</div> </body> </html>
上面程式碼的初衷是,呼叫document.close方法關閉文件流。
然後再呼叫document.write方法寫入新的內容,由於會隱式呼叫document.open方法,所以原來頁面的內容會被覆蓋清空,然而頁面效果並未符合預期,原因分析如下:
(1).方法處於文件流中,且此文件流是由瀏覽器建立。
(2).document.close方法沒有許可權關閉由瀏覽器建立的文件流。
再來演示一段程式碼例項,加深理解:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> function done(){ let newW=window.open("","螞蟻部落","_blank"); newW.document.write("antzone"); newW.document.close(); newW.document.write("softwhy"); } window.onload=function(){ let obt=document.getElementById("bt"); obt.onclick=function(){ done(); } } </script> </head> <body> <div>本站url地址是www.softwhy.com</div> <input type="button" id="bt" value="檢視效果"/> </body> </html>
程式碼分析如下:
(1).點選按鈕後會執行事件處理函式,進而呼叫done函式。
(2).再通過window.open方法建立一個新的視窗,然後利用document.write方法在頁面中寫入"antzone"。
(3).再使用document.close方法關閉此文件流,此方法可以關閉通過window.open建立的文件。
(4).最後document.write方法隱式呼叫document.open方法建立一個新的文件流,然後寫入"softwhy"。
相關文章
- vim 清空內容和替換文字
- Git清空VIM編輯器內容Git
- java檔案相關(檔案追加內容、檔案內容清空、檔案內容讀取)Java
- 如何實現室內無線覆蓋
- golang寫入檔案時,覆蓋前檔案(將前檔案清空)Golang
- 中國搜尋推出“內容安全一體機” 覆蓋四大場景
- 室內無線覆蓋如何做到最好?
- 矩形覆蓋
- 如何使用python指令碼定時清空檔案內容?Python指令碼
- 測試用例評審:開發、產品、測試人員都覆蓋了哪些內容?
- 最小圓覆蓋
- Mysql索引覆蓋MySql索引
- 棋盤覆蓋
- 室內無線覆蓋設計有哪些選擇?
- 程式碼覆蓋率與測試覆蓋率比較
- 企業WiFi覆蓋,解決覆蓋四大難題WiFi
- 做專案覆盤時,是如何覆盤的?都覆盤哪些內容呢?
- Maven配置覆蓋內嵌tomcat虛擬對映路徑MavenTomcat
- 全球覆蓋 雜湊
- 線段覆蓋(挖
- idea2022.1 檢視單測覆蓋率展示分支覆蓋率Idea
- MySQL 索引覆蓋(Covering Index)MySql索引Index
- ESLint: 規則配置覆蓋EsLint
- 線段覆蓋問題
- JZ-010-矩形覆蓋
- 【劍指Offer】矩形覆蓋
- 什麼是覆蓋索引?索引
- pHp程式碼覆蓋率PHP
- 棋盤覆蓋問題
- canvas 填充覆蓋描邊Canvas
- php實現矩形覆蓋PHP
- 資料結構與演算法涵蓋哪些內容?資料結構演算法
- 76. 最小覆蓋子串
- java覆蓋率檢測-jacocoJava
- 精準測試之覆蓋
- 最大匹配、最小頂點覆蓋、最大獨立集、最小路徑覆蓋(轉)(再轉)
- 自動化會提高測試覆蓋率,那測試覆蓋率是什麼?
- 健康低輻射,訊號全覆蓋,飛魚星i-Home覆蓋方案上市