我一直在对Twitter的嵌入式时间表进行大量的研究.我一直在试图弄清楚是否可以知道时间线何时完成加载并显示在页面上.这个 issue has been requested,但还没有实施.我来到一个死胡同,希望有人能够帮助我找到解决方案.这是我到目前为止发现的

添加嵌入式时间轴的代码:

<a class="twitter-timeline" href="https://twitter.com/twitterapi" data-widget-id="YOUR-    WIDGET-ID-HERE">Tweets by @twitterapi</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

当脚本运行时会发生什么:

>脚本替换< a>标记与< iframe>元件.
> iframe的内容已经准备好了,但头像图片和’follow @username’按钮没有完成下载. iframe的height属性设置为0,以便您没有看到没有图像的内容.
>头像图像被下载,但’follow @username’按钮仍在下载.内容仍然不可见.
>“follow @username”按钮完成下载. iframe的height属性设置为与iframe的内容的高度相匹配.时间线现在可见.

现在,我已经尝试了所有可以想到的时间线可见(不使用settimeout / interval).目标是进行非轮询事件/函数/回调.这是我迄今为止没有成功的尝试:

>在iframe上设置事件监听器(如onload,DOMContentLoaded,DOMFrameContentLoaded等),以知道内容何时完成加载.这不行,因为iframe没有src属性.经过uglified代码(我无法找到未压缩的版本),我的猜测是它正在使用写入来将内容添加到iframe的主体.
>设置事件侦听器,以了解iframe的height属性更改的时间.理论上,这个事件应该三次启动:第一次当内容加载时,第二个高度设置为0,第三个高度设置为显示完全加载的时间轴.然而,我只能够在前两个案件中触发事件,而不是第三个(我实际想要的那个).我使用DOMSubtreeModified,onreadystatechange和onpropertychange,但只有DOMSubtreeModified用于触发事件.
>在iframe的一部分设置事件侦听器.因为JavaScript可以从Twitter到达iframe内部,所以可以抓取iframe中的任何元素(如文档或窗口).但是,在iframe的窗口或文档上添加onload,DOMContentLoaded或DOMFrameContentLoaded事件监听器仍然不会触发这些事件.
>在“follow @username”按钮上设置事件侦听器.该按钮实际上是一个具有src属性的iframe.通过设置一个onload事件,它将被加载时被触发.但是,onload事件将始终启动两次.第一次完成下载,第二次完成处理.在第二次触发后立即显示时间轴.要实现这个是相当的黑客(我猜所有的东西),因为你必须等待iframe的内容加载,到达内部并获取’follow @username’iframe,设置一个onload事件,然后等待第二件事发生.
>使用twttr.widgets.createTimeline()函数,它具有回调的可选参数.但是,当内容准备就绪(步骤2)时,调用回调函数,但iframe可见时调用(步骤4).

在这一点上我可能还有更多的组合.我知道有一个github gist使用Twitter的widget.js,但添加回调.我无法让这个工作.

对不起日志问题,但我希望有人能够帮助.谢谢.

解决方法

当您复制并粘贴从Twitter获得的代码时,您必须更换:
<script>!function(d,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,"twitter-wjs");</script>

有了这个:

<script>!function(d,p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";js.setAttribute('onload',"twttr.events.bind('rendered',function(e) {doSomething()});");fjs.parentNode.insertBefore(js,"twitter-wjs");</script>

当然,上面提到的doSomething函数是当你的嵌入式时间线加载和呈现时运行的回调函数.

此外,我猜这个解决方案在Internet Explorer中不起作用,因为它不支持脚本元素的onLoad事件. Yet there are solutions for that.

最后,你可以看到我在the Twitter embedded timeline scraper I wrote的这个问题的方法.

javascript – Twitter嵌入式时间线回调的更多相关文章

  1. 详解Html5页面实现下载文件(apk、txt等)的三种方式

    这篇文章主要介绍了详解Html5页面实现下载文件(apk、txt等)的三种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. 详解使用postMessage解决iframe跨域通信问题

    这篇文章主要介绍了详解使用postMessage解决iframe跨域通信问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  3. 基于HTML十秒做出淘宝页面

    十分钟做出一个网页,看似不可思议,下面小编给大家带来了基于HTML十秒做出淘宝页面,只分为两步,代码超级简单,需要的朋友参考下吧

  4. html5唤起app的方法

    这篇文章主要介绍了html5唤起app的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. 跨域修改iframe页面内容详解

    这篇文章主要介绍了跨域修改iframe页面内容详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  6. 使用postMessage让 iframe自适应高度的方法示例

    这篇文章主要介绍了使用postMessage让 iframe自适应高度的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  7. iOS Swift上弃用后Twitter.sharedInstance().session()?. userName的替代方案

    解决方法如果您仍在寻找解决方案,请参阅以下内容:

  8. 使用Fabric SDK iOS访问Twitter用户时间线

    我试图在这个问题上挣扎两天.我正在使用FabricSDK和Rest工具包,试图为Twitter使用不同的RestAPIWeb服务.我可以使用具有authTokenSecret,authToken和其他值的会话对象的TWTRLogInButton成功登录.当我尝试获取用户时间线时,我总是得到失败的响应,作为:{“errors”:[{“code”:215,“message”:“BadAuthentic

  9. ios – 通过Fabric安装的Twitter,登录工作,请求推文的持久性错误

    我没有想法.解决方法当你请求推文时,我想你的代码如下所示,对吗?原来他们的文档不完整,应该是这样的客户端对象需要您的用户信息来完成它的工作.我遇到过同样的问题.

  10. 我可以在iOS中自定义Twitter工具包的登录按钮吗?

    我已经下载了Twitter工具包框架并添加了用Twitter登录的代码.但是,我不希望登录按钮看起来像那样.我想要一个用于登录的自定义按钮.我能这样做吗?我只想使用这个框架,因为这也适用于iOS系统帐户.解决方法根据document:在按下按钮中添加代码:Objective-C的迅速

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部