亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何優雅的用js動態的添加html代碼?

如何優雅的用js動態的添加html代碼?

翻閱古今 2019-04-08 11:16:45
如果需要在js里動態的加載一些html代碼,一般會選擇下面這樣的方式str="親愛的提示條您真的要GG嗎?  "但是感覺這樣太丑了,可讀性和可維護性都很差。有什么更加優雅和簡潔的方式嗎?
查看完整描述

2 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

把你想要的結構寫在HTML里,用一個display:none的標簽來包裹,一般而言,會使用:
不設置為type="text/javascript"的script標簽
textarea標簽
親愛的提示條
您真的要GG嗎?
  
親愛的提示條
您真的要GG嗎?
  
使用這些標簽,是為了避免這些不被直接使用的標簽一被瀏覽器讀取到就被渲染。而且這樣做的話,里面的img的src也不會被瀏覽器自動獲取。
如果你使用script標簽,就可以如下代碼得到它:
//使用script包裹
vartemplate=document.getElementById("theTemplate").innerHTML;
//使用textarea包裹
vartemplate=document.getElementById("theTemplate").value;
使用時textarea時要注意,textarea無法嵌套自身;script標簽也無法自嵌套。
但如果文檔結構是固定的,里面的數據需要動態填充呢?請參考面向數據編程。
P.S.對于innerHTML和value的使用可能會造成XSS。
動態添加HTML代碼,前端若由模板導出,在JS里面寫結構,或者在HTML里面寫結構,這個結構對于黑客來說都是白盒的,白盒攻擊相對簡單,黑客可以通過閱讀代碼來看到哪一些代碼可以被利用。比如$用戶簽名$,發現這里的用戶簽名是用戶可控制的數據之后,黑客可以構造一個之類的用戶簽名,未經過濾<>的話,就可以做到XSS。
因此,在面向數據編程里講到的方案中,通過json進行動態匹配替換時,一定要保證后端輸出的數據JSON里,<、>等語義敏感的字符正確轉義。
                            
查看完整回答
反對 回復 2019-04-08
慕課專欄
更多

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號