簡體   English   中英

<noscript>標簽不起作用

[英]<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>

(或等效的基於類的解決方案)

嘗試刪除stylescope ,如下面的代碼。

       <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”。


我的測試環境:

  • Sybu JavaScript 攔截器,版本 2.93
  • 切換 JavaScript,版本 1.3
  • Chrome,版本 85.0.4183.83

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM