Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该把类似Facebook的Javascript代码放在哪里?_Javascript_Facebook_Web - Fatal编程技术网

我应该把类似Facebook的Javascript代码放在哪里?

我应该把类似Facebook的Javascript代码放在哪里?,javascript,facebook,web,Javascript,Facebook,Web,据说javascript代码必须放在标记之前。但在生成类似Facebook的按钮后,我收到以下消息: 在页面上包含JavaScript SDK一次,最好在 打开标签 这是我必须添加的代码: <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return;

据说javascript代码必须放在
标记之前。但在生成类似Facebook的按钮后,我收到以下消息:

在页面上包含JavaScript SDK一次,最好在 打开
标签

这是我必须添加的代码:

<div id="fb-root"></div>
<script>(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/all.js#xfbml=1&appId=675640525783719";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id))返回;
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/all.js#xfbml=1&appId=675640525783719”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);

照他们说的做,把它放在打开的标签后面。
标签:

<html>
<body>
<div id="fb-root"></div>
<script>(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/all.js#xfbml=1&appId=675640525783719";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

//rest of your code

</body>
</html>

(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id))返回;
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/all.js#xfbml=1&appId=675640525783719”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
//代码的其余部分

你把它放在哪里并不重要,只要它在
标签前面。将其添加到页面顶部(就在
之后)可确保SDK已下载,并且如果页面下方的任何javascript尝试直接访问
FB
对象,则SDK可用于页面


您的
需要位于放置
..
标记的任何位置之上,以便SDK可以找到该div以向其添加资源。

我有点晚了,但我正在搜索自己关于此主题的信息

这一小部分脚本实际上是异步下载另一个脚本(实际用于API的脚本)并将其注入页面

默认情况下,web浏览器(至少是旧浏览器)将停止渲染并在下载外部脚本时等待。这就是为什么经常建议将脚本放在正文末尾的原因。但是,通过异步加载脚本,它们不会阻止渲染

现代浏览器支持
async
脚本标记:

<script src="http://example.com/script.js" async>

async
的浏览器支持:

我认为这是目前异步加载脚本的更好方法,但Facebook希望获得尽可能最好的支持(IE9及更低版本)。如果浏览器不支持
async
,那么该属性将被忽略,脚本应该可以正常加载,尽管是同步加载


我不确定的一点是,为什么我自己也在寻找答案:如果你已经异步加载脚本,为什么不把它放在
中?为什么特别是正文的开头?我不知道。在我的研究中,它应该就在正文标记之后,因为它试图加载一个iFrame,然后脚本就自动加载这是为了提高性能,这样它就不会阻挡你渲染的任何东西

参考:

我有点晚了,但我正在研究这个话题

这一小部分脚本实际上是异步下载另一个脚本(实际用于API的脚本)并将其注入页面

默认情况下,web浏览器(至少是旧浏览器)将停止渲染并在下载外部脚本时等待。这就是为什么经常建议将脚本放在正文末尾的原因。但是,通过异步加载脚本,它们不会阻止渲染

现代浏览器支持异步脚本标记:

<script src="http://example.com/script.js" async>

你的问题是什么?正如他们所说,你需要将它放在开头的正文标签之后。你能发布完整的url吗?