2017-03-18 10 views
0

有点奇怪的问题,但我在Google上找不到任何关于它的任何内容。当在下面的代码拉动.js文件,如(Facebook的开发):如果在将源文件从一个域拉到另一个域时使用实际的.js文件,它会影响吗?

(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src =  "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.4&appId=111111"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 

他是什么人js.src是像//connect.facebook.net/en/sdk并在该网页上是所有的JavaScript代码都只是纯文本。把它放在脚本标签之间会使它充当javascript。我做了一些测试,似乎工作正常,但我相信我错过了一些东西。

所以简而言之,这是好吗/安全/稳定?

+0

谢谢你们的回复。 – Scott

回答

0

两者都很好。只需添加更多图层,就像避免重复插入相同的脚本一样。

这只是简单地创建这样一个DOM元素:

(function(d, s, id) { // function with 3 arguments 
    // Because of the call below, the arguments are: 
    // d = document 
    // s = "script" 
    // id = "facebook-jssdk" 
    var js, fjs = d.getElementsByTagName(s)[0]; // Gets all elements of type "script" 
    if (d.getElementById(id)) return; // Checks if any of the existent elements have the id "facebook-jssdk", to not doubleinsert 
    js = d.createElement(s); js.id = id; // Creates an element of type "script" and sets the id 
    js.src =  "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.4&appId=111111"; // Sets the source 
    fjs.parentNode.insertBefore(js, fjs); // Inserts the script 
}(document, 'script', 'facebook-jssdk')); // calls the function above with 3 parameters 

所以,是的,它实际上将认为该文件是一个JavaScript之一,因为它是装:

<script id="facebook-jssdk" src="//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.4&appId=111111" /> 

一步一步与其他脚本通常一样。

0

2件事。首先,你的源文件实际上是一个js文件(connect.facebook.net/en_US/sdk.js),其后有一些数据。我试图打开完整和短的网址,他们似乎是相同的源文件,所以它应该无关紧要,如果你只是使用connect.facebook.net/en_US/sdk.js。其次,您可以使用type =“text/javascript” 的开头脚本标签,或者您可以使用document.createElement('脚本')方式在脚本标签本身内声明它,就像您一样(文档,'script','facebook-jssdk')。

无论哪种方式是好的,但有一个伟大的职位,解释差异here

而且,你所采取的方式的facebook SDK instructions recommend,所以我相信它是安全的。 ;-)

相关问题