Javascript 什么';从文件加载脚本的最佳方式是什么?
我有一个通过ajax调用或jquery加载div的应用程序Javascript 什么';从文件加载脚本的最佳方式是什么?,javascript,jquery,html,Javascript,Jquery,Html,我有一个通过ajax调用或jquery加载div的应用程序 $('#cont').load("something.html"); <div id="cont"> </div> $('#cont').load(“something.html”); something.html看起来像: <script src="./js/test.js"></script> <table> .......blah....blah &
$('#cont').load("something.html");
<div id="cont">
</div>
$('#cont').load(“something.html”);
something.html看起来像:
<script src="./js/test.js"></script>
<table>
.......blah....blah
</table>
……诸如此类……诸如此类
我得到:
jquery-1.12.0.min.js:4主线程上的同步XMLHttpRequest因其对最终用户体验的有害影响而被弃用。如需更多帮助,请查看
我一直在查看test.js文件,只是将脚本剪切并粘贴到something.html的开头,但这是大量冗余的脚本。很多页面都使用它,维护起来很麻烦
有没有办法让脚本以这种方式加载到单独的.js文件中?尝试将其分为两个操作。在页面中,使用引用外部JS文件的普通脚本元素加载JS脚本:
<script src="./js/test.js"></script>
尝试将其分为两个操作。在页面中,使用引用外部JS文件的普通脚本元素加载JS脚本:
<script src="./js/test.js"></script>
如果脚本不需要同步执行,可以尝试:
<script src="./js/test.js" async="async"></script>
<table>
.......blah....blah
</table>
……诸如此类……诸如此类
这样做意味着不能保证在解析和呈现以下
之前执行脚本。设置async
属性意味着这可以按任何顺序发生
HTML5规范是:
async和defer属性是表示
脚本应该如何执行。延迟和异步属性必须是
如果src属性不存在,则不能指定
有三种可能的模式可以使用这些选项进行选择
属性。如果存在async属性,则脚本将被删除
一旦可用,就异步执行。如果是异步的
属性不存在,但存在“延迟”属性,则
脚本在页面完成解析后执行。如果两者都没有
属性,则获取并执行脚本
紧接着,在用户代理继续解析页面之前
对于现代浏览器:
- IE 10+
- FF 3.6+
- 铬8+
- 狩猎5.1+
- 歌剧15+
<script src="./js/test.js" async="async"></script>
<table>
.......blah....blah
</table>
……诸如此类……诸如此类
这样做意味着不能保证在解析和呈现以下
之前执行脚本。设置async
属性意味着这可以按任何顺序发生
HTML5规范是:
async和defer属性是表示
脚本应该如何执行。延迟和异步属性必须是
如果src属性不存在,则不能指定
有三种可能的模式可以使用这些选项进行选择
属性。如果存在async属性,则脚本将被删除
一旦可用,就异步执行。如果是异步的
属性不存在,但存在“延迟”属性,则
脚本在页面完成解析后执行。如果两者都没有
属性,则获取并执行脚本
紧接着,在用户代理继续解析页面之前
对于现代浏览器:
- IE 10+
- FF 3.6+
- 铬8+
- 狩猎5.1+
- 歌剧15+
元素的HTML时,它会立即执行脚本。如果是对外部脚本的引用,它将使用同步AJAX递归加载脚本,以模拟浏览器加载HTML文件时加载脚本的方式。这会触发警告
您可以忽略这个警告,因为同步AJAX不会很快消失。但是如果你真的想摆脱它,你可以把你的负载分成两部分。从something.html
中取出加载test.js
的行,并使用:
$.getScript('./js/test.js', function() {
$("#cont").load('something.html');
});
当jQuery插入包含
元素的HTML时,它会立即执行脚本。如果是对外部脚本的引用,它将使用同步AJAX递归加载脚本,以模拟浏览器加载HTML文件时加载脚本的方式。这会触发警告
您可以忽略这个警告,因为同步AJAX不会很快消失。但是如果你真的想摆脱它,你可以把你的负载分成两部分。从something.html
中取出加载test.js
的行,并使用:
$.getScript('./js/test.js', function() {
$("#cont").load('something.html');
});
嗨,詹姆斯,这是最好的:因为这是通常的做法。这要看情况而定。您可以使用AMD之类的加载程序,您可以将脚本与browserify绑定,您可以创建一个
并设置src
在放入页面后,您可以像现在一样使用jQuery.load()
。它难以置信地依赖于用例。我想知道你为什么会收到同步警告。我认为.load()
不能同步加载。据我所知,甚至没有一个属性允许您执行此操作。我知道我是通过从外部文件加载脚本,而将脚本加载到div。。。例如index.html有一个div,我用jquery加载它。我加载的文件正在查找外部文件本身。。。当我把文件内容放在开头而不是调用一个集中式的.js文件-everythings okhi james时,这是最好的:因为这是通常的做法。这取决于。您可以使用AMD之类的加载程序,您可以将脚本与browserify绑定,您可以创建一个
并设置src
在放入页面后,您可以像现在一样使用jQuery.load()
。它难以置信地依赖于用例。我想知道你为什么得到同步警告