小编use*_*525的帖子

async使用document.write加载javascript

我试图异步谷歌地图api javascript.

因此,正常的脚本标记有效 <script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>

但是,以下异步版本没有.

(function () {
    var gmap = document.createElement('script'); gmap.type = 'text/javascript'; gmap.async = true;
    gmap.src = 'https://maps.googleapis.com/maps/api/js?sensor=false';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gmap, s);
})();
Run Code Online (Sandbox Code Playgroud)

经过一些断点+检查操作后,我发现该行在异步模式下无法正常运行.

document.write('<' + 'script src="' + src + '"' + 
' type="text/javascript"><' + '/script>');
Run Code Online (Sandbox Code Playgroud)

同步模式下的文档对象是"HTMLDocument",但在异步模式下则是"#document".加载页面后,文档对象发生了某些变化.思考?

干杯.

更新:这个问题更多的是为什么不会触发document.write而不是异步加载谷歌地图API.如果在此行上设置断点,则可以看到document.write函数存在.这与document.write是本机的这一事实有什么关系吗?

javascript asynchronous google-maps-api-3

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

仅通过id引用元素,没有document.getElementById

可能重复:
IE/Chrome:DOM树元素是全局变量吗?

我目前正在使用jquery mobile在移动网站上工作,我发现了一些有趣的东西(无论如何,对我来说,因为我还是js的新手).在函数内部,您可以引用仅具有id的元素.

这是我使用的测试代码(在chrome 22.0.x,firefox 16.0.1和safari 5.1.7上):

<!DOCTYPE html>
<html>
  <head></head>
  <body onload="tt()">
    <div id="abc">Test</div>
    <a id="cba">Test2</a>
  </body>
  <Script>
    function tt() {
        console.log(abc);
        abc.style.backgroundColor = "red";
        return cba;
    }
  </Script>
</html>
Run Code Online (Sandbox Code Playgroud)

没有getElementById,没有jquery选择器,只有id.它总是这样吗?如果是这样,这是一个很好的做法,为什么这样做?我认为函数必须有一个上下文,但它在哪里,它是页面?

任何见解将不胜感激,谢谢.

javascript

5
推荐指数
1
解决办法
1734
查看次数