加载第三方脚本的正确方法?

时间:2014-10-16 11:15:19

标签: javascript

借助Stackoverflow的一些帮助,我设法在我自己的网站上显示来自Tumblr的博客内容。

我注意到如果Tumblr网站速度很慢,会影响我自己网站的网页加载速度。

我在javascript.info上找到了this article。本文建议使用此代码创建外部脚本URL的变量。

 var script = document.createElement('script')
 script.src = 'http://ads.com/buyme?rand='+Math.random()

 // now append the script into HEAD, it will fetched and executed
 document.documentElement.firstChild.appendChild(script)

我(有点)理解前两行中发生的事情,但我不明白如何使用代码的最后一部分:

 document.documentElement.firstChild.appendChild(script)

如何将script变量添加到脚本的src

<script type="text/javascript" src="URL OF SCRIPT TO GO HERE"></script>

希望有人可以提供帮助,这对我网站上的其他第三方脚本非常有用。

更新

感谢#Spooniest&#39;帮助解决这个问题(见下面的主题)。

我在使用当前页面时遇到问题,所以我决定将其删除并创建一个基本页面,看看我是否可以使这个脚本正常工作。

以下代码有效,它会在</head>标记之前删除Javascript。大!然而,当我检查页面时,有些困扰我的东西(使用Dev Tools)我看到了这个警告:

Uncaught SyntaxError: Unexpected token < ?rand=0.9741437959019095:1

为什么会出现这种情况?这是一个问题吗?

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script>
var script = document.createElement('script')
script.src = 'http://ads.com?rand=' + Math.random()

// now append the script into HEAD, it will fetched and executed
document.documentElement.firstChild.appendChild(script)
</script>
<title>Demo</title>
</head>
<body>
<p>A basic page</p>
</body>
</html>

UDATE 2

弄清问题是什么。脚本中的URL不是.js文件。当我输入一个链接到.js文件的URL(我想要的)时,它就可以了!

2 个答案:

答案 0 :(得分:1)

您已添加。

让我们再次查看代码:

var script = document.createElement('script')
script.src = 'http://ads.com/buyme?rand='+Math.random()

// now append the script into HEAD, it will fetched and executed
document.documentElement.firstChild.appendChild(script)

第一行创建将成为script标记的元素。第二行将script.src设置为特定网址:在这种情况下,它是指广告网站,但您可能希望使用Tumblr代码的网址。第三行将您的脚本放在文档元素中的第一个标记的末尾(在本例中为head)。

魔术发生在前两行。 document.createElement查看您正在创建的标记的名称,以便找出用于该元素的正确类:对于'script',这意味着使用HTMLScriptElement。 此特定类知道当您设置其src属性时,该属性应该包含在src标记的script属性中。该实例您创建后即使将其放入文档中也会记住这一点,以便该属性如何实现。

答案 1 :(得分:0)

document.documentElement.firstChild.appendChild(script)

上面的代码会将脚本添加到页面的head标签中。由于document.documentElement.firstChild将指向头标记。

您不必将script变量添加到src中,因为它已经被javascript代码处理了。

通常建议应始终在页面底部添加javasript文件。这样页面加载速度更快。