识别javascript函数的元素
我得到了facebook自动生成的类似按钮插件代码的功能。但是,我不太确定函数中的变量,如果有人能帮我找出每个变量的含义,我将不胜感激识别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
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,你问了一个问题,得到了一大堆答案。你真正想知道的是一个与你实际问的完全不同的问题。我的建议是为第二部分创建一个新的问题,尽管你可能不会得到很多回答,因为这是一个非常笼统的问题。