Javascript onload回调;类型“;或“;rel”'text/plain'在脚本或链接标记上
Javascript onload callback for "type" or "rel", 'text/plain' on script or link tag
为什么不为script type="text/plain"启动onload?下面的loadPlain不会触发回调,但loadScript会触发。
我本以为这会奏效。。。不应该吗?
loadPlain("http://localhost/ajax/libs/jquery/1.10.2/jquery.min.js", function(element) {
alert(1);
alert(element.innerHTML);
}, undefined, {})
function loadPlain(path, callback, errorCallback, options) {
var element = document.createElement('script');
element.setAttribute("type", 'text/plain');
element.setAttribute("src", path);
return loadBase(element, callback, errorCallback, options);
}
function loadScript(path, callback, errorCallback, options) {
var element = document.createElement('script');
element.setAttribute("type", 'text/javascript');
element.setAttribute("src", path);
return loadBase(element, callback, errorCallback, options);
}
function loadBase(element, callback, errorCallback, options) {
element.loaded = false;
if (element.readyState){ // IE
element.onreadystatechange = function(){
if (element.readyState == "loaded" || element.readyState == "complete"){
element.onreadystatechange = null;
loadBaseOnload(element, callback);
}
};
} else { // Others
element.onload = function() {
loadBaseOnload(element, callback);
};
}
element.onerror = function() {
errorCallback && errorCallback(element);
};
(options.elementAppendTo || document.head || loadBase.head || (loadBase.head = document.getElementsByTagName('head')[0]) || document.body).appendChild(element);
return element;
}
function loadBaseOnload(element, callback) {
if (element.loaded != true) {
element.loaded = true;
if ( callback ) callback(element);
}
}
请注意,我知道XMLHttpRequest,但这不是问题所在:)
WHATWG(与W3C一起指定浏览器行为的组织)有一个已知脚本MIME类型的列表,以及一些不能被视为脚本语言的黑名单MIME类型:
下面列出了用户代理必须识别的MIME类型字符串,以及它们所引用的语言:
"application/ecmascript"
"application/javascript"
"application/x-ecmascript"
以下MIME类型(带或不带参数)不得解释为脚本语言:
"text/plain"
"text/xml"
"application/octet-stream"
"application/xml"
注意:这里明确列出了这些类型,因为它们是定义不好的类型,但很可能被用作数据块的格式,如果用户代理突然将它们解释为脚本,这将是有问题的。
WHATWG规范称之为";数据块";以下是包含在<script>
标签中的非脚本:
在本例中,使用了两个脚本元素。一个嵌入外部脚本,另一个包含一些数据。
<script src="game-engine.js"></script>
<script type="text/x-game-map">`
........U.........e
o............A....e
.....A.....AAA....e
.A..AAA...AAAAA...e
</script>
WHATWG规范中为<script>
标记指定load
事件的组件明确表示,它们为<script>
标记引用的脚本而不是非脚本数据块激发。如果type
未被识别为与浏览器支持的脚本语言相对应的MIME类型,则<script>
元素是数据块。这意味着,像text/plain
这样被列入黑名单的类型永远不会被识别为脚本,而"必须支持"answers"不得不支持"列表中的类型值,比如application/dart
(用于谷歌的Dart语言),可能会被一些浏览器支持。
此外,在src
旁边包含非脚本type
是不符合规范的。数据块只有在内联指定时才合法:
当用于包括数据块(与脚本相反)时,数据必须内嵌,数据的格式必须使用
type
属性给定,src
属性不能指定并且脚本元素的内容必须符合为所用格式定义的要求。
如果您将脚本指定为"text/plain",浏览器将不会对其执行任何操作。
您必须将其指定为"script/javascript",才能将其作为javascript执行。
- 我发现了一些只在移动设备上可见的垃圾邮件链接,我可以'找不到包含此垃圾邮件链接的脚本的位置
- 什么's使用链接和脚本标记引用JavaScript源之间的区别
- Javascript:在新页面中打开链接并运行脚本
- 如何通过分配单个变量来减少此脚本中的链接数
- jQuery Pan & Zoom 或 Magnify 脚本,具有热点或图像映射链接的能力
- 是否有脚本/代码可以一次将链接属性添加到多个链接
- 阅读第'页;s从chrome扩展中链接的脚本
- 脚本链接格式以实现跨浏览器兼容性
- 用于浏览器检测和url链接的脚本
- Javascript一页滚动脚本滚动到每个点击的链接一个接一个
- 多个脚本导致链接问题?Javascript、CSS、HTML、Jquery
- 我想更改wordpress标题中的脚本链接.它们在哪里定义
- 在脚本链接标记中使用注释
- 脚本/链接标签与 AJAX 加载
- 如何在新窗口中打开脚本/链接
- 在IE8中单击时,Java脚本链接将消失
- CasperJS不能正确触发动态脚本/链接调用的回调
- 如何从Javascript脚本链接和执行PHP文件
- IF / THEN咖啡脚本链接
- OpenShift -部署的应用程序不会从头标签加载脚本/链接