<!DOCTYPE html> <title>Script @type: JavaScript types</title> <link rel="author" title="Ms2ger" href="mailto:ms2ger@gmail.com"> <link rel="help" href="https://html.spec.whatwg.org/multipage/#scriptingLanguages"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <div id="log"></div> <script> function testAttribute(attr, val, shouldRun) { test(function() { assert_false(ran, "ran variable not reset"); var script = document.createElement("script"); script.setAttribute(attr, val); script.textContent = "ran = true;" document.body.appendChild(script); assert_equals(ran, shouldRun); }, "Script should" + (shouldRun ? "" : "n't") + " run with " + attr + "=" + format_value(val)); ran = false } function testType(type) { testAttribute("type", type, true); } function testLanguage(lang) { testAttribute("language", lang, true); } function testTypeIgnored(type) { testAttribute("type", type, false); } function testLanguageIgnored(lang) { testAttribute("language", lang, false); } var application = [ "ecmascript", "javascript", "x-ecmascript", "x-javascript" ]; var text = [ "ecmascript", "javascript", "javascript1.0", "javascript1.1", "javascript1.2", "javascript1.3", "javascript1.4", "javascript1.5", "jscript", "livescript", "x-ecmascript", "x-javascript" ]; var spaces = [" ", "\t", "\n", "\r", "\f"]; var ran = false; // Type attribute testType(""); testTypeIgnored(" "); application.map(function(t) { return "application/" + t; }).forEach(testType); application.map(function(t) { return ("application/" + t).toUpperCase(); }).forEach(testType); spaces.forEach(function(s) { application.map(function(t) { return "application/" + t + s; }).forEach(testType); application.map(function(t) { return s + "application/" + t; }).forEach(testType); }) application.map(function(t) { return "application/" + t + "\0"; }).forEach(testTypeIgnored); application.map(function(t) { return "application/" + t + "\0foo"; }).forEach(testTypeIgnored); text.map(function(t) { return "text/" + t; }).forEach(testType); text.map(function(t) { return ("text/" + t).toUpperCase(); }).forEach(testType); spaces.forEach(function(s) { text.map(function(t) { return "text/" + t + s; }).forEach(testType); text.map(function(t) { return s + "text/" + t; }).forEach(testType); }) text.map(function(t) { return "text/" + t + "\0"; }).forEach(testTypeIgnored); text.map(function(t) { return "text/" + t + "\0foo"; }).forEach(testTypeIgnored); // Language attribute testLanguage(""); testLanguageIgnored(" "); text.forEach(testLanguage); text.map(function(t) { return t.toUpperCase(); }).forEach(testLanguage); text.map(function(t) { return t + " "; }).forEach(testLanguageIgnored); text.map(function(t) { return " " + t; }).forEach(testLanguageIgnored); text.map(function(t) { return t + "xyz"; }).forEach(testLanguageIgnored); text.map(function(t) { return "xyz" + t; }).forEach(testLanguageIgnored); text.map(function(t) { return t + "\0"; }).forEach(testLanguageIgnored); text.map(function(t) { return t + "\0foo"; }).forEach(testLanguageIgnored); </script>