必威体育下载克里斯蒂安·海尔曼

γ使用YQL将文本添加到幻灯片共享嵌入的演示文稿中

星期日,1月11日,下午2009点37分

我喜欢幻灯片很多(是的,重复,我知道。这是一个很好的方法传播您的演示文稿因为它允许其他人将它们嵌入到他们的博客和网站中,而且它还允许人们下载和重用您所做的工作。

关于SlideShare,我真正喜欢的一点是它可以创建HTML演示文稿的文本显示在页面的下方,如以下屏幕截图所示:

显示成绩单的幻灯片共享截图

现在,令人讨厌的是幻灯片共享美国石油学会如果你想在演示文稿的同时显示这些抄本,那么尽管它很好,但它并不能提供获取这些抄本的方法。您还需要对非常需要的详细信息进行身份验证,但如果您只想提供一个JavaScript解决方案,这也很糟糕。

好消息是,现在有一种简单的方法可以从任何一个网站检索信息,并将其作为杰森要在javascript中使用:钇铝石榴石.使用钇铝石榴石控制台和一些XPath I例如,可以提取转录信息并将其作为XML(幻灯片)统一资源定位地址网址:http://www.slideshare.net/cheilmann/shifting-gears-presentation以及XPath//OL/LI):


http://query.yahooapis.com/v1/public/yql?q=select*from html,其中url%3d“http%3a%2f%2fwww.slideshare.net%2fcheilmann%2fshifting gears presentation”和xpath%3d“%2f%2fol%2fli”&format=xml

如果将格式定义为杰森并提供一个回调参数,您可以轻松使用该参数编写一个小脚本,将脚本注入SlideShare嵌入:

slidesharescripts=function()
var div=document.getElementsByTagname('div');
var容器=
对于(var i=0;div[i];i++)
if(div[i].id.indexof(''uuu ss')!==- 1){
var slideurl=div[i].getElementsByTagname('a')[0].href.split('?')〔0〕;
containers[slideurl]=c:div[i],id_
获取(SLIDEURL);
}

}
函数get(url)
var url='http://query.yahooapis.com/v1/public/yql?'+
'format=json&callback=slidesharescripts.doit&q='+
'选择%20strong,p%20from%20html%20where%20url%3d%22'+
编码组件(slideurl)+
'%22%20和%20xpath%3d%27%2f%2fol%2fli%27&';
var s=document.createElement(“script”);
S.SRC= URL;
s.type='text/javascript';
document.getElementsByTagname('head')[0].附件子项;
}

函数doit(o)
var url=decodeuricomponent(o.query.uri).split(“”);
var out=document.createElement(“ol”);
var lis=o.query.results.li;
对于(var i=0,j=lis.长度;i var li=document.createElement(“li”);
var strong=document.createElement(“strong”);
var p=document.createElement(“p”);
strong.appendChild(document.createTextNode(lis[i].strong));
p.AppendChild(document.createTextNode(lis[i].p));
li.附属物(强);
li.附属物(p);
out.appendchild(li);
}

容器[url[1]].c.appendchild(out);
}

返回doit:doit
}();

你可以查看正在运行的脚本下载它供你自己使用。您所需要做的就是将它添加到任何带有一个或多个SlideShare嵌入代码的文档底部。脚本的作用如下:

slidesharescripts=function()
var div=document.getElementsByTagname('div');

我们得到了所有div页面中的元素(使用CSS查询这些天,但让我们防弹)。

为了找出哪一个div是Slideshare Embed,我们检查一个包含阿尔萨斯因为嵌入代码有一个从这个开始的ID。

我们要做的就是找出幻灯片的网址。这是需要的,因为有两个原因:第一,我们想要检索转录本,第二,我们需要一种匹配返回数据的方法钇铝石榴石用右手div容器。

生成的脚本节点一个接一个地加载是不安全的,这可以确保将正确的脚本添加到正确的幻灯片中。

所以,我们要做的是检查div,获取第一个链接,从中检索URL,存储div在名为containers的对象中,使用URL作为属性名。此属性获取正确的div作为其价值。我们需要做的就是通过获取()


var容器=
对于(var i=0;div[i];i++)
if(div[i].id.indexof(''uuu ss')!==- 1){
var slideurl=div[i].getElementsByTagname('a')[0].href.split('?')〔0〕;
containers[slideurl]=c:div[i],id_
获取(SLIDEURL);
}

}

这个获取()方法是您的garden-variety脚本节点生成函数,它调用YQL API并定义slidesharescripts.doit()。作为回调参数。这意味着脚本将生成一个脚本节点,指向钇铝石榴石,然后YQL从Slideshare获取成绩单信息,把它变成杰森和电话dot()以转录信息为参数。


函数get(url)
var url='http://query.yahooapis.com/v1/public/yql?'+
'format=json&callback=slidesharescripts.doit&q='+
'选择%20strong,p%20from%20html%20where%20url%3d%22'+
编码组件(slideurl)+
'%22%20和%20xpath%3d%27%2f%2fol%2fli%27&';
var s=document.createElement(“script”);
S.SRC= URL;
s.type='text/javascript';
document.getElementsByTagname('head')[0].附件子项;
}

doit()的任务是生成正确的标记并将其注入嵌入代码中。我们创建一个有序的列表并循环所有的li元素。我们创造了配件HTML为每个列表项编写代码,并将内容作为文本节点添加(innerhtml将尝试呈现幻灯片中使用的标记,这不是一个好主意)。

然后我们取回统一资源定位地址从uri属性中,将列表作为新的子节点添加到以前存储在container对象中的container div中。

新台币
函数doit(o)
var out=document.createElement(“ol”);
var lis=o.query.results.li;
对于(var i=0,j=lis.长度;i var li=document.createElement(“li”);
var strong=document.createElement(“strong”);
var p=document.createElement(“p”);
strong.appendChild(document.createTextNode(lis[i].strong));
p.AppendChild(document.createTextNode(lis[i].p));
li.附属物(强);
li.附属物(p);
out.appendchild(li);
}

var url=decodeuricomponent(o.query.uri).split(“”);
容器[url[1]].c.appendchild(out);
}

返回doit:doit
}();

就是这样。当然,您可以通过只匹配ol并使用innerhtml一次性写出列表来简化这一过程,但是这个解决方案也允许您更改HTML例如,将列表输出到使每个http://example.com成为链接。

抄写快乐!

标签:

在Twitter上分享