3

我正在通过以下方式在我的网站上加载外部 javascript:

<script language="javascript" type="text/javascript">
document.write("<script src='http://remoteserver/banner.php?id=10&amp;type=image&amp;num=3&amp;width=200'><\/script>");
</script>

一切都很好,但是今天远程服务器出现了很大的超时,并且站点上的页面加载被阻塞了。

是否有可能异步加载javascript或在页面加载后加载它?我不希望在远程服务器不工作时页面加载中断。

我知道 HTML5 中有标签异步,但它不起作用,我认为因为这个脚本比 javascript 更复杂(它以“.php”结尾)。我也知道最好将 javascript 文件放在 /body 标记之前以防止这个问题,但这不是最好的解决方案。

你知道其他解决方案吗?

4

2 回答 2

3

同步脚本会阻止解析器...

不正确的方法:

<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
</script>

异步脚本不会阻止页面的呈现:

正确方法:

<script type="text/javascript">
    (function(){
        var po = document.createElement('script');
        po.type = 'text/javascript';
        po.async = true;
        po.src = "https://apis.google.com/js/plusone.js";
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(po, s);
    })();
</script>

来源:http ://www.youtube.com/watch?feature=player_detailpage&v=Il4swGfTOSM&t=1607

于 2013-08-10T21:08:14.990 回答
1

您可以通过创建 DOM 节点轻松地做到这一点。

<script>
    var scriptEl = document.createElement("script"); //Create a new "script" element.
    scriptEl.src = "http://remoteserver/banner.php?id=10&amp;type=image&amp;num=3&amp;width=200";
    // ^ Set the source to whatever is needed.
    document.body.appendChild(scriptEl);
    // Append the script element at the bottom of the body.
</script>
于 2013-08-10T20:38:21.910 回答