【问题标题】:Injecting JavaScript via AJAX warning message通过 AJAX 警告消息注入 JavaScript
【发布时间】:2016-07-09 03:39:17
【问题描述】:
我有一个 AJAX 将转到 div#container,如下所示
var loc={};
loc.script = document.createElement('script');
loc.script.type = 'text/javascript';
loc.script.src = "highcharts.js";
$("#container").prepend(loc.script);
但我一直在控制台上收到此警告:
主线程上的同步 XMLHttpRequest 已被弃用,因为
其对最终用户体验的不利影响。如需更多帮助,
检查https://xhr.spec.whatwg.org/。
代码仍然可以正常工作,但我应该担心这个吗?重写上面的代码以删除警告的最佳方法是什么?
【问题讨论】:
标签:
javascript
jquery
ajax
【解决方案1】:
<script> 标签同步加载内容。当您使用外部引用创建<script> 元素时,主线程会一直等待,直到它返回。
处理这个问题的最佳方法是手动加载脚本并将其注入 JS 命名空间。 Jquery getScript 函数也是如此。它通过 ajax 获取脚本,评估脚本并将其添加到命名空间。脚本在 DOM 树中的位置并不重要,因为它不是可视元素。
$.getScript( "highcharts.js" )
.done(function( script, textStatus ) {
console.log( textStatus );
})
.fail(function( jqxhr, settings, exception ) {
$( "div.log" ).text( "Triggered ajaxError handler." );
});
Here 是文档。