[英]<noscript> tag not working
我使用<noscript>
標記在未啟用 javascript 時隱藏某些元素; 但是,它似乎不起作用。
我的文件聲明:
<!DOCTYPE html>
在我的文件末尾,我輸入了以下內容:
<noscript>
<style type="text/css" scoped> #status {display:none;} </style>
</noscript>
</body>
</html>
但是即使在禁用 JS 之后,#status div 仍然存在。 我在這里錯過了什么嗎?
移除style
標簽的scoped
屬性。 它使您的 CSS 嚴格應用於<noscript>
標簽。
如果此屬性存在,則樣式僅適用於其父元素。
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style#Attributes
一個更簡單的管理解決方案是默認隱藏元素並使用它:
<script>document.getElementById('status').style.display='block';</script>
(或等效的基於類的解決方案)
嘗試刪除style
的scope
,如下面的代碼。
<noscript>
<style type="text/css"> #status {display:none;} </style>
</noscript>
@dystroy 的回答是正確的做法,因為:
<style>
元素不能放在<body>
(除非它們有scoped
屬性)<noscript>
元素不能放在頭上。 但是如果你不想延遲,你可以在<head>
使用以下內容:
<style id="noScriptSheet" type="text/css">
.onlyScript{ display:none;}
</style>
<script type="text/javascript">
function kill(el){
return el.parentNode.removeChild(el);
}
kill(document.getElementById('noScriptSheet'));
</script>
並向您的元素添加一個類:
<div class="onlyScript">Hello world!</div>
演示: http : //jsfiddle.net/TQLfu/
我添加這個答案是因為這似乎是關於noscript
標簽的最流行的 SO 問題。
它似乎根本不會被"Sybu JavaScript Blocker" 觸發。 因此,如果您正在使用該 JavaScript 阻止程序進行測試,請嘗試使用另一個 JavaScript 阻止程序。 當我使用“Toggle Javascript”時, noscript
標簽毫無問題地被觸發。 我還沒有發現一種方法來檢測正在使用“Sybu JavaScript Blocker”。
我的測試環境:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.