Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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
识别javascript函数的元素_Javascript_Facebook_Html_Facebook Like - Fatal编程技术网

识别javascript函数的元素

识别javascript函数的元素,javascript,facebook,html,facebook-like,Javascript,Facebook,Html,Facebook Like,我得到了facebook自动生成的类似按钮插件代码的功能。但是,我不太确定函数中的变量,如果有人能帮我找出每个变量的含义,我将不胜感激 html函数从以下位置收集数据: <div class="fb-like" data-href="https://www.facebook.com/yanntiersen.official" data-send="true" data-width="450" data-show-faces="true" data-font="arial"&g

我得到了facebook自动生成的类似按钮插件代码的功能。但是,我不太确定函数中的变量,如果有人能帮我找出每个变量的含义,我将不胜感激

html
函数从以下位置收集数据:

    <div class="fb-like" data-href="https://www.facebook.com/yanntiersen.official"   
data-send="true" data-width="450" data-show-faces="true" data-font="arial"></div>

实际的javascript函数:

<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_GB/all.js#xfbml=1&appId=123456789";
  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_GB/all.js#xfbml=1&appId=123456789”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
我看到该函数是为
(document,'script','facebook jssdk')
调用的,但我并不真正理解如何工作。
有人能解释一下吗?

脚本正在查找标记名为“script”的元素,然后获取对第一个脚本对象的引用

然后,它查找id为“FacebookJSSDK”的元素。如果找到此id,则停止处理

然后,它创建一个新的脚本标记,将id设置为“facebook jssdk”,将源代码设置为“//connect.facebook.net/en_GB/all.js#xfbml=1&appId=123456789”,并将脚本插入页面上第一个脚本之前。

//创建一个包含参数“d”、“s”和“id”的函数`
//Create a function taking arguments `d`, `s` and `id`
(function(d, s, id) {

    //Initialise variable js, initialise variable fjs to the first element with the tag 
    //name s
    var js, fjs = d.getElementsByTagName(s)[0];

    //If the element with id = id exists already, escape from the function.
    if (d.getElementById(id)) return;

    //Create a new element of type s ('script') and set it's id to id ('facebookjssdk')
    js = d.createElement(s); js.id = id;

    //Set the script's src attribute to the path specified.
    js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=123456789";

    //Insert the new element immediately before the first <script> on the page.
    fjs.parentNode.insertBefore(js, fjs);

//Call the function immediately with document for d, 'script' for s and 'facebook-jssdk' 
//for id.
}(document, 'script', 'facebook-jssdk'));
(功能(d、s、id){ //初始化变量js,将变量fjs初始化为带有标记的第一个元素 //姓名s var js,fjs=d.getElementsByTagName[0]; //如果id=id的元素已经存在,则从函数中转义。 if(d.getElementById(id))返回; //创建一个类型为s('script')的新元素,并将其id设置为id('facebookjssdk') js=d.createElement;js.id=id; //将脚本的src属性设置为指定的路径。 js.src=“//connect.facebook.net/en_GB/all.js#xfbml=1&appId=123456789”; //在页面上第一个元素之前插入新元素。 fjs.parentNode.insertBefore(js,fjs); //立即调用函数,使用文档表示d,脚本表示s,facebook jssdk //身份证。 }(文档“脚本”、“facebook jssdk”);
如果您不熟悉模式
(函数(){})()
,它只是一个封装代码并按定义调用自身的函数

(function ( d , s , id) {

}(document, 'script', 'facebook-jssdk));
这意味着以下是正确的

d = document;
s = 'script';
id = 'facebook-jssdk';
有了这些知识

// Get the first <script> tag in the document
var fjs = document.getElementsByTagName(s)[0]

// Return void from this function if '#facebook-jssdk' exists
if ( document.getElementById('facebook-jssdk') ) return ;

// Create a new script tag
var js = d.createElement(s)

// Assign the id to the script tag
js.id = id;

// Assign a source to load asyncrounously into this tag
js.src = '//connect...';

// Insert the script element into the DOM BEFORE the first script tag
fjs.parentNode.insertBefore( js , fjs )
//获取文档中的第一个标记
var fjs=document.getElementsByTagName[0]
//如果存在“#facebook jssdk”,则从此函数返回void
if(document.getElementById('facebook-jssdk'))返回;
//创建一个新的脚本标记
var js=d.createElement
//将id分配给脚本标记
js.id=id;
//分配一个源以异步加载到此标记中
js.src='//连接…';
//在第一个脚本标记之前将脚本元素插入DOM
fjs.parentNode.insertBefore(js,fjs)

希望这有助于

基本上是这样做的:

Gets the first "<script>" element in the document
If an object exists with the id of "facebook-jssdk" than
    return (dont process the rest of the code)
EndIf
Create a "<script>" element
Set the new "<script>" element's id to 'facebook-jssdk'
Set the new "<script>" element's src location to "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=123456789"
(this loads a javascript file from facebook's server onto the client)
Insert the new "<script>" tag before the first "<script>" tag in the page
获取文档中的第一个“”元素
如果存在id为“facebook jssdk”的对象,则
return(不处理代码的其余部分)
恩迪夫
创建“”元素
将新“”元素的id设置为“facebook jssdk”
将新“”元素的src位置设置为“//connect.facebook.net/en_GB/all.js#xfbml=1&appId=123456789”
(这会将一个javascript文件从facebook服务器加载到客户端)
在页面中第一个“”标记之前插入新的“”标记

希望有帮助:)

那么有什么方法可以找到我的html和js函数之间的关联吗?我想用不同的参数在循环中执行这个函数。代替
https://www.facebook.com/yanntiersen.official
我需要一个带有link的数组,这需要添加一个javascript文件。没有必要多次运行它。那么有什么方法可以找到我的html和js函数之间的关联呢?我想用不同的参数在循环中执行这个函数。代替
https://www.facebook.com/yanntiersen.official
我想要一个带有链接的数组,你会怎么做?这个函数只是异步地将facebook JDK加载到DOM中。你会调用这个函数一次又一次……我想我知道你想做什么,这个函数加载执行类似操作所需的javascript。您需要参考developer.facebook.com上的Javascript SDK文档才能实际使用它。您提供的HTML使用该SDK。这个函数只不过是将它加载到你的页面中。那么,我有没有办法找到我的html和js函数之间的关联呢?我想用不同的参数在循环中执行这个函数。代替
https://www.facebook.com/yanntiersen.official
我想要一个带有link的数组。我不确定你的意思,这个脚本只能生成一个元素(#facebook jssdk),它创建了一个只做一件事的链接。你说的链接数组是什么意思?Bujanca,你问了一个问题,得到了一大堆答案。你真正想知道的是一个与你实际问的完全不同的问题。我的建议是为第二部分创建一个新的问题,尽管你可能不会得到很多回答,因为这是一个非常笼统的问题。