script
Elementem, który został urządzony jak display:block
pojawia widoczne. Dlaczego jest to możliwe i czy jest jakiś prawdziwy przypadek użycia, w którym jest to pożądane?
td > * {
display: block;
}
<table>
<tr>
<td>
<script type="text/javascript">
var test = 1;
</script>von 1
</td>
</tr>
</table>
html
css
script-tag
wutzebaer
źródło
źródło
<style>
z edytowalną zawartością. Niezły sposób, aby zobaczyć efekty w czasie rzeczywistym.Odpowiedzi:
Specyfikacja HTML5 definiuje arkusz stylów, którego powinny używać programy użytkownika (takie jak przeglądarki). Sekcja 10.3.1 zawiera listę stylów dla „Ukrytych elementów”:
Jak widać, dotyczy
display: none;
toscript
.To jedyna „bariera” między użytkownikami a ukrytymi
script
elementami. Jest to w porządku i ma na celu możliwość nadpisywania stylów z arkuszy stylów klienta w arkuszach stylów autora (i oczywiście także w arkuszach stylów użytkownika).Dlaczego ktoś mógłby chcieć tego użyć? Jednym z przypadków użycia jest wyświetlanie treści bez konieczności zmiany znaczenia znaków, takich jak
<
/>
, podobnie jak w starymxmp
elemencie.script
Element może być używany nie tylko dla skryptów, ale także dla bloków danych (czyli do niczego o typie MIME).źródło
<script>
blokach danych - nie można ich załadowaćsrc
.src
atrybut nie jest dozwolony wscript
elemencie.Ponieważ są to elementy HTML jak wszystkie inne i nie ma powodu, aby pisać specjalne reguły dotyczące wielkości liter w specyfikacji HTML (co zwiększyłoby złożoność), aby uniemożliwić stosowanie do nich CSS.
Każdy element można stylizować. Weź na przykład:
Z pewnością nie ma powszechnych, ale ogólne zasady nie mają sensu we wszystkim , do czego można je zastosować. Są przeznaczone do typowych przypadków.
źródło
user agent stylesheet: script {display:none}
<script type="text/plain">
tak, jak<xmp>
w przeszłości, ale nadal być kompatybilny z walidatorem W3C.script {display: block !important;}
nie działa, gdy nie ma reguły szczególnego przypadku?script
tag również musi znajdować się w widocznym elemencie - będzie pokazywał tylko Twojescript
treści w treści, a nie nphead
. Domyślnie.Inny (rzadki) przypadek użycia:
Czasami używam
<script>
tagów do krótkich przykładów kodu HTML w przewodnikach stylistycznych. W ten sposób nie muszę uciekać od tagów HTML i znaków specjalnych. Autouzupełnianie tagów edytora tekstu i podświetlanie składni nadal działają. Ale nie ma łatwego sposobu na dodanie podświetlania składni w przeglądarce.źródło
text/html
i użycie czegoś podobnegoclass="codesample"
do stosowania stylów. Tylko z powodów pedantycznych: Dx-
przedrostka dla niestandardowych typów, tj. Zrobić totext/x-example
.Możliwy przypadek użycia: do celów debugowania.
Możesz zastosować zajęcia na poziomie dokumentu, np.
<body class="debugscript">
, a następnie użyj CSS:źródło
<html class="debugscript">
?<head>
skryptów, ponieważ<head>
sama w sobie również ma,display:none
więc musiałbyś to na siłę ujawnić, co może prowadzić do dalszych komplikacji.Tagi skryptów są domyślnie ukrywane przy użyciu
display:none;
. Unor 1 wyjaśnia podstawową specyfikację języka. Jednak nadal są częścią DOM i mogą być odpowiednio stylizowane.To powiedziawszy, ważne jest, aby dokładnie pamiętać, co robi tag skryptu. Chociaż kiedyś towarzyszyły mu typy i języki, nie jest to już wymagane. Obecnie zakłada się, że jest tam JavaScript, w wyniku czego przeglądarki będą interpretować i wykonywać skrypt w momencie napotkania (lub załadowania) z tych tagów.
Po wykonaniu skryptu zawartość tagu to tylko tekst (często ukryty) na stronie. Ten tekst można ujawnić, ale można go również usunąć, ponieważ jest to zwykły tekst.
U dołu strony, tuż przed zamykającym
</html>
tagiem, możesz bardzo łatwo usunąć te tagi wraz z ich tekstem i nie byłoby żadnych zmian na stronie.Na przykład:
Nie usunie to żadnej funkcjonalności, ponieważ stan strony został już zmieniony i jest odzwierciedlony w bieżącym globalnym kontekście wykonywania. Na przykład, jeśli strona załadowała bibliotekę, taką jak jQuery, usunięcie tagów nie będzie oznaczać, że jQuery nie jest już ujawniane, ponieważ zostało już dodane do środowiska wykonawczego strony. Zasadniczo sprawia, że narzędzie do inspekcji DOM nie wyświetla elementów skryptu, ale podkreśla, że raz wykonane elementy skryptu są w rzeczywistości tylko tekstem.
1. unor, czw. 07 lipca 2016 r., Wutzebaer, „Kiedy tagi powinny być widoczne i dlaczego mogą?”, 1 lipca o godz. 10:53, https://stackoverflow.com/a/38147398/1026459
źródło