
[英]Why does the Chrome Developer Tools/Console does not show javascript files/error that were loaded dynamically?
[英]Firefox not executing JavaScript files that were loaded dynamically
我正在尝试加载两个由于type
属性非标准而被推迟的脚本,即text/javascript/defer
。 这样做会使解析器忽略它们,因此我想使用JavaScript重新加载它们。
我的HTML如下:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>No Title</title>
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript/defer" src="assets/js/test3.js"></script>
<script type="text/javascript/defer" src="assets/js/test4.js"></script>
<script type="text/javascript" src="assets/js/jquery.js"></script>
<script>
$(document).ready(function(){
var defer_js_collection_obj = $("[type='text/javascript/defer']"),
el_head_rq_obj = $('head'),
el_head_obj = el_head_rq_obj[0]
;
if(defer_js_collection_obj.length > 0)
{
//Reload JavaScript
defer_js_collection_obj.each(function() {
var file_src_outer_html_str = this.outerHTML;
var file_src_res_arr = file_src_outer_html_str.match("src *\= *[\"\']{1}(.*?)[\"\']{1}");
var file_src_str = file_src_res_arr[1];
var fileref = document.createElement('script');
fileref.setAttribute("type", "text/javascript");
fileref.setAttribute("src", file_src_str);
document.getElementsByTagName("head")[0].appendChild(fileref);
});
//Unload JavaScript with defer tag
for(var j = defer_js_collection_obj.length-1; j >= 0; j--)
{
defer_js_collection_obj[j].parentNode.removeChild(defer_js_collection_obj[j]);
}
}
});
</script>
</head>
<body>
<div>Load Deferred JavaScript</div>
</body>
</html>
jquery.js
是1.11.2版。 test3.js
和test4.js
引用了我要加载的javascript文件,它们包含console.log('test3.js is loaded');
和console.log('test4.js is loaded');
分别。
我遇到的问题是,该脚本几乎可以在除Firefox之外的所有其他地方使用。 我在使用Firefox 46.0.1的Mac OS X 10.10.5上,加载脚本时看不到console.log
消息。
我怎样才能解决这个问题?
尝试将脚本追加到body的末尾,而是这样做:
document.getElementsByTagName("body")[0].appendChild(fileref);
这可能是mime类型的问题。 您是否在控制台中看到任何消息,指出“格式不正确”? 无论如何,这似乎对我有用,并且我同意您的代码在我初次尝试时在FF中不起作用。
$(document).ready(function(){
console.log("main");
var $body = $($("body")[0]);
var $scripts = $("[type='text/javascript/defer']");
$scripts.each(function(){
var scriptTag = document.createElement("script");
scriptTag.setAttribute("type", "text/javascript");
scriptTag.setAttribute("src", $(this).attr("src"));
$body.append(scriptTag);
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.