javascript - 在<script>標簽中輸出</script>的疑問
問題描述
問題描述:
<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title></head><body> <script> console.log('</script>'); </script></body></html>
無法輸出,報錯:Uncaught SyntaxError: Invalid or unexpected token。
這屬于是瀏覽器的BUG嗎?
問題解答
回答1:結合瀏覽器看起解析,估計能明白,因為你要console的是一個script的結束標簽,瀏覽器在解析html標簽的時候,直接就把它當做結束標簽用了,這時候你會看到頁面上只顯示了');,余下的本來是真正的結束標簽,被當做多余處理掉了。
類似情況還有
<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title></head><body> <script> //</script> </script></body></html>
從解析標簽的角度來看,瀏覽器:“這鍋我不背”。
如果要正常顯示,可以 加轉義
<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title></head><body> <script> console.log('</script>'); </script></body></html>回答2:
瀏覽器內核的HTML解析器是一種“狀態機”的處理方式;html解析原理
回答3:谷歌可以輸出
相關文章:
1. 如何解決docker宿主機無法訪問容器中的服務?2. 請問關于 Java static 變量的問題?3. 跨類調用后,找不到方法4. 頁面用CSS3的scale屬性進行了縮放,圖片模糊解決不了,那么字體能否讓它們不模糊呢?5. javascript - 微信IOS頁面中input type=number輸入數字無法顯示,安卓顯示正常6. 淺談vue生命周期共有幾個階段?分別是什么?7. javascript - 動態添加路由報錯8. ios - Crash Log 里關于微信SDK的問題9. javascript - hash為什么可以做路由跳轉,不會刷新頁面10. $( "html" ).parent()方法返回一個包含document的集合,而$( "html" ).parents()返回一個空集合 哪位大神來解釋下?
