【问题标题】:How to detect completed tweet made using Twitter intents and Javascript如何检测使用 Twitter 意图和 Javascript 完成的推文
【发布时间】:2014-03-29 02:48:44
【问题描述】:

我对 Twitter 编程完全陌生,所以请原谅我的无知。我试图找到解决此问题的方法,但无济于事..

在 HTML 中我有这个:

<a href='javascript: submit_with_twitter()'>submit</a>

我使用自己的按钮来触发推文,因为该按钮实际上是一个“提交和推文”按钮,而不仅仅是一个标准的“推文”按钮。

在 JS 中:

function submit_with_twitter() {

  twttr.events.bind('click', function (event) {
  alert("foo");
});


    var myURL = encodeURIComponent("http://www.xxx.org.uk/compose-letter");

    var my_text = encodeURIComponent("blah blah");
    var url = "https://twitter.com/intent/tweet?url=" + myURL + "&text=" + my_text + "&via=xxx";

    window.open(url, "Twitter", "status = 1, left = 430, top = 270, height = 550, width = 420, resizable = 0");
}

推特弹窗打开,推文可以发布成功。但是,有两个问题:

1)tweet实际上是表单提交过程的第一阶段,所以当tweet已经发出时,JS需要检测到它才能触发表单提交

2) 弹窗不会自动关闭

如果我像这样手动包含 twitter JS:

<script type="text/javascript" src="//platform.twitter.com/widgets.js"></script>

调用我的 JS 函数时出现此控制台错误:

Uncaught TypeError: Object function a(e){if(!e)return;var t,r,i,o;n.apply(this,[e]),t=this.params(),r=t.size||this.dataAttr("size"),i=t.showScreenName||this.dataAttr("show-screen-name"),o=t.count||this.dataAttr("count"),this.classAttr.push("twitter...<omitted>...t' 

如果我不手动包含推特 JS,推文仍然有效,但没有错误消息,也没有其他任何事情发生。

我应该补充一点,所有这些都是在 wordpress 中完成的。我在 WP 页面编辑器中包含了我自己的 JS 文件,因为这似乎通常效果最好,我添加了:

<meta name="twitter:widgets:csp" content="on">

到页面。

------------ 编辑 ----------

现在我的 JS 是这样的:

jQuery(document).ready(function($) {
    // Code here will be executed on document ready. Use $ as normal.

     console.log("jQuery(document).ready");

    $.getScript('https://platform.twitter.com/widgets.js', function(){
  //  console.log("twttr: "+twttr);
    console.log("twttr object: %o", twttr);
     console.log("jQuery object: %o", jQuery);

  $(twttr).ready(function (twttr) {
       console.log("twttr ready, adding tweet handler");




       $(twttr.events).bind('tweet', function () {
         console.log("tweeted event!");
      });

        $(twttr.events).bind('click', function () {
         console.log("click event!");
      });

        $(twttr.events).bind('follow', function () {
         console.log("follow event!");
      });
    });


});

});

消除了所有错误,推文窗口现在自行关闭,所有控制台日志都按预期显示,除了应该在推文发出后出现的日志。

基本上,除了 tweet 事件从未被捕获之外,一切似乎都很好!

【问题讨论】:

    标签: javascript jquery wordpress twitter


    【解决方案1】:

    好的,

    对于未来的患者,我终于发现twitter是在wordpress的其他地方设置的,所以没有必要使用

    $.getScript('https://platform.twitter.com/widgets.js', function(){}
    

    <script type="text/javascript" src="https://platform.twitter.com/widgets.js"></script>
    

    或任何其他设置 twitter 小部件的尝试。

    我还没有调查是哪个插件(如果有的话)导致 twitter 被初始化..

    此外,如果页面不包含 HTML twitter 链接,则如下所示:

    <a href='https://twitter.com/intent/tweet' >Tweet Test</a>
    

    twitter 未初始化,因此无法检测到事件。所以,最简单的方法是使用链接正常触发推文,然后使用捕获的推文事件来运行任何后续的JS,而不是使用JS来触发推文

    【讨论】:

      猜你喜欢
      • 2011-08-22
      • 2018-05-03
      • 1970-01-01
      • 2023-04-10
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      • 2020-03-15
      相关资源
      最近更新 更多