相关疑难解决方法(0)

加载并执行脚本的顺序

有很多不同的方法可以在html页面中包含JavaScript.我知道以下选项:

  • 内联代码或从外部URI加载
  • 包括在<HEAD>或<body>标记[ 1,2 ]
  • 没有deferasync属性(只有外部脚本)
  • 包含在静态源中或由其他脚本动态添加(在不同的解析状态,使用不同的方法)

不计算来自硬盘,javascript:URIs和onEvent-attributes [ 3 ]的浏览器脚本,已经有16个替代方法可以执行JS,我确信我忘了一些东西.

我不太关心快速(并行)加载,我对执行顺序更感兴趣(这可能取决于加载顺序和文档顺序).是否有一个很好的(跨浏览器)参考,涵盖所有情况?例如http://www.websiteoptimization.com/speed/tweak/defer/仅处理其中的6个,并且主要测试旧浏览器.

我担心没有,这是我的具体问题:我有一些(外部)头脚本用于初始化和脚本加载.然后我在身体的末尾有两个静态的内联脚本.第一个允许脚本加载器动态地将另一个脚本元素(引用外部js)附加到正文.第二个静态内联脚本想要使用添加的外部脚本中的js.它可以依赖于已执行的其他(以及为什么:-)?

javascript load-order

248
推荐指数
4
解决办法
20万
查看次数

什么是"var _gaq = _gaq || [];"for?

Google Analytics中的异步跟踪代码如下所示:

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-XXXXX-X']); 
_gaq.push(['_trackPageview']); 

(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)

关于第一行:

var _gaq = _gaq || []; 
Run Code Online (Sandbox Code Playgroud)

我认为它确保if _gaq已经定义,我们应该使用它,否则我们应该使用数组.

任何人都能解释这是为了什么吗?

此外,_gaq重命名是否重要?换句话说,Google Analytics是否依赖于名为_gaq?的全局对象?

javascript google-analytics

46
推荐指数
4
解决办法
4万
查看次数

了解Layman术语中的异步代码

我理解异步的基本内容:事情不按顺序执行.据我所知,有一些非常强大的东西...... 但对于我的生活,我无法绕过代码.让我们来看看我写过的异步Node.JS代码......但是没有真正得到.

function newuser(response, postData) {
    console.log("Request handler 'newuser' was called.");
    var body = '<html>' + 
        '<head>' +
        '<meta http-equiv="Content-Type" content="text/html; ' +
        'charset=UTF-8" />' +
        '</head>' +
        '<body>' +
        '<form action=" /thanks" method="post">' +
        '<h1> First Name </h1>' +
        '<textarea name="text" rows="1" cols="20"></textarea>' +
        '<h1> Last Name </h1>' +
        '<textarea name="text" rows="1" cols="20"></textarea>' +
        '<h1> Email </h1>' +
        '<textarea name="text" rows="1" cols="20"></textarea>' +
        '<input type="submit" value="Submit text" />' +
        '</body>' +
        '</html>';
    response.writeHead(200, { "Content-Type": "text/html" });
    response.write(body);
    response.end(); …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous node.js

19
推荐指数
2
解决办法
1万
查看次数