Ein script
Element, das so gestaltet wurde, dass es display:block
sichtbar erscheint. Warum ist es möglich und gibt es einen realen Anwendungsfall, in dem dies gewünscht wird?
td > * {
display: block;
}
<table>
<tr>
<td>
<script type="text/javascript">
var test = 1;
</script>von 1
</td>
</tr>
</table>
html
css
script-tag
Wutzebaer
quelle
quelle
<style>
mit bearbeitbaren Inhalten gesehen. Gute Möglichkeit, die Auswirkungen in Echtzeit zu sehen.Antworten:
Die HTML5-Spezifikation definiert ein Stylesheet , das von Benutzeragenten (wie Browsern) erwartet wird. Abschnitt 10.3.1 listet die Stile für "Versteckte Elemente" auf:
Wie Sie sehen können, gilt es
display: none;
fürscript
.Dies ist die einzige "Barriere" zwischen Ihren Benutzern und versteckt
script
Elementen. Es ist vollkommen in Ordnung und soll Stile von User-Agent-Stylesheets in Autoren-Stylesheets (und natürlich auch in User-Stylesheets) überschreiben können.Warum möchte jemand es vielleicht benutzen? Ein Anwendungsfall ist das Anzeigen von Inhalten, ohne dass Zeichen wie
<
/ maskiert werden müssen>
, ähnlich wie beim altenxmp
Element. Dasscript
Element kann nicht nur für Skripte verwendet werden, sondern auch für Datenblöcke (dh für alles mit einem MIME-Typ).quelle
<script>
- Datenblöcke codiert sein, die nicht von geladen werden könnensrc
.src
Attribut für dasscript
Element nicht zulässig .Da es sich um HTML-Elemente wie alle anderen handelt und es keinen Grund gibt, Sonderfallregeln in die HTML-Spezifikation zu schreiben (was die Komplexität erhöhen würde), um zu verhindern, dass CSS auf sie angewendet wird.
Jedes Element kann gestylt werden. Nehmen Sie zum Beispiel:
Sicherlich keine gemeinsamen, aber allgemeine Regeln sind nicht für alles sinnvoll, auf das Sie sie anwenden können. Sie sind für die häufigsten Fälle ausgelegt.
quelle
user agent stylesheet: script {display:none}
<script type="text/plain">
wie<xmp>
in der Vergangenheit verwenden, sind aber dennoch mit dem W3C-Validator kompatibel.script {display: block !important;}
nicht, wenn es keine Sonderfallregel gibt?script
Tag auch in einem sichtbaren Element befinden muss - es zeigt nurscript
s im Körper an, nicht zhead
. B. standardmäßig.Ein weiterer (nicht häufiger) Anwendungsfall:
Ich verwende manchmal
<script>
Tags für kurze HTML-Codebeispiele in Styleguides. Auf diese Weise muss ich mich HTML-Tags und Sonderzeichen nicht entziehen. Die automatische Vervollständigung von Texteditor-Tags und die Hervorhebung der Syntax funktionieren weiterhin. Es gibt jedoch keine einfache Möglichkeit, Syntaxhervorhebungen im Browser hinzuzufügen.quelle
text/html
und etwas wieclass="codesample"
zum Anwenden von Stilen zu verwenden. Nur aus pedantischen Gründen: Dx-
für benutzerdefinierte Typen zu verwenden, dh es zu erstellentext/x-example
.Möglicher Anwendungsfall: zum Debuggen.
Sie können eine Klasse auf Dokumentebene anwenden, z.
<body class="debugscript">
, dann verwenden Sie etwas CSS:quelle
<html class="debugscript">
?<head>
Skripte enthüllt, weil das<head>
selbst auch hat,display:none
so dass Sie das zwangsweise enthüllen müssten, was zu weiteren Komplikationen führen könnte.Skript-Tags werden standardmäßig mit ausgeblendet
display:none;
. Unor 1 erklärt die zugrunde liegende Sprachspezifikation. Sie sind jedoch immer noch Teil des DOM und können entsprechend gestaltet werden.Es ist jedoch wichtig, genau zu berücksichtigen, was ein Skript-Tag tut. Früher wurde es von Typen und Sprachen begleitet, aber das ist nicht mehr erforderlich. Es wird nun davon ausgegangen, dass JavaScript vorhanden ist. Infolgedessen interpretieren Browser das Skript so, wie es von diesen Tags angetroffen (oder geladen) wird, und führen es aus.
Sobald das Skript ausgeführt wurde, besteht der Inhalt des Tags nur noch aus Text (häufig ausgeblendet) auf der Seite. Dieser Text kann aber enthüllt werden auch entfernt werden, da es sich nur um Text handelt.
Am Ende Ihrer Seite, kurz vor dem Schließen
</html>
Tag, können Sie diese Tags sehr leicht zusammen mit ihrem Text entfernen, und es würden keine Änderungen an der Seite vorgenommen.Beispielsweise:
Dadurch werden keine Funktionen entfernt, da der Status der Seite bereits geändert wurde und sich im aktuellen globalen Ausführungskontext widerspiegelt. Wenn die Seite beispielsweise eine Bibliothek wie jQuery geladen hat, bedeutet das Entfernen der Tags nicht, dass jQuery nicht mehr verfügbar ist, da es bereits zur Laufzeitumgebung der Seite hinzugefügt wurde. Das DOM-Inspektionstool zeigt im Wesentlichen nur keine Skriptelemente an, hebt jedoch hervor, dass die einmal ausgeführten Skriptelemente wirklich nur Text sind.
1. unor, Do 07. Juli 2016, wutzebaer, "Wann sollten Tags sichtbar sein und warum können sie?", 1. Juli um 10:53 Uhr, https://stackoverflow.com/a/38147398/1026459
quelle