我正在使用<script>内部执行外部脚本<head>.
现在,由于脚本在页面加载之前执行,我无法访问<body>其中的内容.在文档被"加载"(HTML完全下载并在RAM中)后,我想执行一些JavaScript.我的脚本执行时是否有任何可以挂钩的事件,这些事件会在页面加载时触发?
我想说
var minValue = 0;
if ( typeof callback == 'function' ) {
setTimeout( callback, minValue );
}
Run Code Online (Sandbox Code Playgroud)
当我用JavaScript实现回调函数时这段代码.
但我发现现代浏览器和一些旧浏览器
具有不同的最小超时值.
我知道Zero不能是最小值.
setTimeout的最小值是多少?
现代浏览器和一些旧浏览器的兼容性问题?
我想在不使用jQuery的情况下重写这一行,因此可以更快地应用(并且在下载jQuery库之前).这条线是......
$(document).ready(function() { $('body').addClass('javascript'); });
Run Code Online (Sandbox Code Playgroud)
如果我将它添加到html元素中,我是否可以省去DOM准备好的部分?但有一个问题是验证器不喜欢html元素上的class属性,即使它是用JS插入的.
那么,如果没有jQuery,我该如何重写呢?
我为什么需要使用:
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
Run Code Online (Sandbox Code Playgroud)
代替:
<script async="true" type="text/javascript" src="http://www.google-analytics.com/ga.js"></script>
Run Code Online (Sandbox Code Playgroud)
我能看到的唯一原因是他们有一个不同的SSL子域.如果不是因为有任何理由使用这种脚本注入技术?