新作書きました↓
☠️†卍️ 兵庫県警に補導される難解スクリプト️ ️卍†☠️
☠️元ネタ☠️
まず該当のURLからソースを取ってくる
curl http://n41050z.web.fc2.com/burakura.html > burakura.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>無題</title>
<SCRIPT LANGUAGE="JavaScript">
for ( ; ; ) {
window.alert(" ∧_∧ ババババ\n( ・ω・)=つ≡つ\n(っ ≡つ=つ\n`/ )\n(ノΠU\n何回閉じても無駄ですよ~ww\nm9(^Д^)プギャー!!\n byソル (@0_Infinity_)")
}
</SCRIPT>
</head>
<body />
</html><script type="text/javascript"><!--
var fc2footerparam = 'charset=' + (document.charset ? document.charset : document.characterSet) + '&url=' + document.location + '&service=0&r=' + Math.floor(Math.random()*99999999999);
var fc2footertag = '<' + 'script src="//vip.chps-api.fc2.com/apis/footer/?' + fc2footerparam + '" charset="UTF-8"><' + '/script>';
document.write(fc2footertag);
//--></script>
<!-- FC2, inc.-->
<img src="//media.fc2.com/counter_img.php?id=50" style="visibility:hidden" alt="inserted by FC2 system" width="0" height="0">
<!-- FC2, inc.-->
</html>
から以下はFC2によって自動的に付与されるものだと思われるからそれを除いた以下のソースを添削していく。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>無題</title>
<SCRIPT LANGUAGE="JavaScript">
for ( ; ; ) {
window.alert(" ∧_∧ ババババ\n( ・ω・)=つ≡つ\n(っ ≡つ=つ\n`/ )\n(ノΠU\n何回閉じても無駄ですよ~ww\nm9(^Д^)プギャー!!\n byソル (@0_Infinity_)")
}
</SCRIPT>
</head>
<body />
</html>
添削
DOCTYPE宣言
HTMLやXHTMLのどのバージョンで作成されているかを宣言するため最初の行に<!DOCTYPE html>
を追記するべき。
<html>
↓
<!DOCTYPE html>
<html>
...
script内のlanguage属性
script内のlanguage属性はobsoleteなので削除したほうがいい。
<SCRIPT LANGUAGE="JavaScript">
...
</SCRIPT>
↓
<SCRIPT>
...
</SCRIPT>
<body />
これだとSelf-closing構文になってしまう。
bodyは空の要素ではないため(コンテンツを持つ要素であるため)、開始タグの<body>
と解釈されてしまう。
そのために以下のように修正するとよい。
<body/>
↓
<body></body>
参考:
- HTML 5.2: 8. The HTML syntax
- html - Are (non-void) self-closing tags valid in HTML5? - Stack Overflow
lang属性
<html>
にはlang属性をつけることが推奨される。
<html>
↓
<html lang="ja">
メタタグ
HTML5では上記のままで問題ない。
charset属性を使用すれば以下のよう短くかける。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
↓
<meta charset="UTF-8">
SCRIPTタグ
XHTML1.0では大文字(UPPER CASE)でかくべきだが、HTML4.01以降から区別されない。
問題はないが、他のタグと統一性を保つために小文字で描くべき。
<SCRIPT>
...
</SCRIPT>
↓
<script>
...
</script>
参考: タグは大文字・小文字どちらで書くべき? - タグHTML
for(;;)
for(;;) ...
でも無限ループになるが、可読性のためにwhile(true) ...
を使った方がいい。
for ( ; ; ) {
↓
while (true) {
AA文字列
AAを1行で書いているために可読性が低い。
+
で連結したほうが見やすい。
window.alert(" ∧_∧ ババババ\n( ・ω・)=つ≡つ\n(っ ≡つ=つ\n`/ )\n(ノΠU\n何回閉じても無駄ですよ~ww\nm9(^Д^)プギャー!!\n byソル (@0_Infinity_)")
↓
window.alert(
" ∧_∧ ババババ\n" +
"( ・ω・)=つ≡つ\n" +
"(っ ≡つ=つ\n" +
"`/ )\n" +
"(ノΠU\n" +
"何回閉じても無駄ですよ~ww\n" +
"m9(^Д^)プギャー!!\n" +
" byソル (@0_Infinity_)"
)
インデント
インデントをつけた方がいい。
添削結果
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>無題</title>
<script>
while (true) {
window.alert(
" ∧_∧ ババババ\n" +
"( ・ω・)=つ≡つ\n" +
"(っ ≡つ=つ\n" +
"`/ )\n" +
"(ノΠU\n" +
"何回閉じても無駄ですよ~ww\n" +
"m9(^Д^)プギャー!!\n" +
" byソル (@0_Infinity_)"
);
}
</script>
</head>
<body></body>
</html>
ちなみに
以下だけでも動く。
<script>
while (true) {
window.alert(
" ∧_∧ ババババ\n" +
"( ・ω・)=つ≡つ\n" +
"(っ ≡つ=つ\n" +
"`/ )\n" +
"(ノΠU\n" +
"何回閉じても無駄ですよ~ww\n" +
"m9(^Д^)プギャー!!\n" +
" byソル (@0_Infinity_)"
);
}
</script>
余談
なんで無限アラートのURL貼っただけで書類送検になるんですかねぇ...
ウェブ開発してるときにバグ発生したら捕まる世界になるのかな