twitter如何给我回电推文?

Cam*_*mel 9 javascript twitter jquery callback

推文按钮通常是:

<a href="https://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="someone">Tweet</a>
<script type="text/javascript" src="//platform.twitter.com/widgets.js"></script>
Run Code Online (Sandbox Code Playgroud)

在这里,我可以在用户推文时收到回调:

<script>
  twttr.events.bind('tweet', function(event) {
    console.log(event);
  });
</script>
Run Code Online (Sandbox Code Playgroud)

我不明白:twitter如何给我这个回调?推文是在另一个窗口和另一个域中完成的.这怎么可能?

cod*_*ger 3

据我所知,这是 Twitter 自己的Web Intents实现,它是一个松散地基于 Android Intents 功能的 Web API。看起来 Twitter 正在使用 Web Intents 的 JavaScript 实现(可能与此类似)。

在这种情况下,Twitter JavaScript 会intent向浏览器注册。intent您共享 URL 的人。当用户单击推文按钮时,intent活动将启动并显示一个新的弹出窗口。

用户单击弹出窗口中的推文按钮,浏览器将事件数据发送回启动活动时指定的回调。回调在 中指定,widget.js并且您可以使用该方法连接到此事件twttr.events.bind

有一个很好的例子说明了WebIntents 的JavaScript github实现是如何工作的。

用法

今天使用

目前没有浏览器原生支持此 API。要使用该系统,只需将以下代码放入您的网站即可:

<script src="http://webintents.org/webintents.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

当浏览器开始在本机实现此功能时,Shim 会将其所有功能推迟到本机接口。

宣言

要注册您的服务应用程序以便能够处理图像共享,只需声明一个意图标签即可。

<intent 
  action="http://webintents.org/share"
  type="image/*" />
Run Code Online (Sandbox Code Playgroud)

这将注册当前页面共享图像的能力。

祈求

要构建可以使用共享功能的客户端应用程序,只需使用以下代码即可:

var intent = new Intent(
    "http://webintents.org/share", 
    "image/*", 
    "http://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Three_jolly_kittens.png/800px-Three_jolly_kittens.png"

);
window.navigator.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

服务

当通过 startActivity 调用服务时,窗口上的“intent”对象将填充客户端提供的数据。

window.intent
Run Code Online (Sandbox Code Playgroud)

就是这样。

要将数据发送回调用它的客户端,只需在意图上调用 postResult() 即可。

window.intent.postResult("something cool");
Run Code Online (Sandbox Code Playgroud)

该示例与 Twitter 的实现显然略有不同,但总体流程是相同的。

以下是 WebIntents API 的其他一些参考: