【问题标题】:Twitter Uncaught TypeError: undefined is not a functionTwitter Uncaught TypeError: undefined is not a function
【发布时间】:2025-06-12 22:15:02
【问题描述】:

我已将我在使用 Twitter 小部件时遇到的错误缩小到事件绑定。

twttr.events.bind('tweet', function (event) { addShared(); });

    twttr.events.bind('tweet', addShared);

似乎产生了同样的错误:Uncaught TypeError: undefined is not a function。 它们最终都可以工作,但按钮有时会很有趣,我想知道这个错误是否与问题有关。

请注意,在单击按钮之前检查网页时,Chrome 会显示该错误,但该按钮有效,推文有效,但生成的绑定功能不再有效。这是我最近注意到的一个问题,根本没有更改 twitter 代码,并且事件绑定以前可以正常工作。

任何建议甚至承认看到同样的问题都会很好,谢谢。

【问题讨论】:

  • bind() 中的第一个参数如果这是本机bind(),是函数内部this 的值,我怀疑您是否要将其设置为字符串tweet,如何关于尝试twttr.events.bind(twttr, 'tweet', addShared);
  • 感谢您的尝试,但这似乎根本不会影响错误。我正在继续玩代码,看看我是否能想出任何东西,但看起来我的用法与很多人正在做的一样:*.com/questions/19236039/… 我正在做的事情遵循他们的文档:dev.twitter.com/docs/tfw/events
  • 我遇到了同样的错误,因为脚本的 html 部分位于
    中。尝试将其放在表单之外,问题将得到解决。
  • 我们的大多数网站似乎都使用 .Net 网络表单,这可能不是我们当前设置的选项。在重组一些网站后,我将不得不尝试一下。与此同时,我的回答解决了这个问题,但您可以将您的评论作为答案发布给那些可能从中受益的人。

标签: javascript jquery button twitter


【解决方案1】:

@indianburger 在 Twitter 的讨论中最终解决了这个问题。

问题在于如何加载和调用代码。解决方案以 jsfiddle 的形式出现:@indianburer's jsfiddle

如果这被破坏了,事件绑定所需的最简单示例是:

<a href="https://twitter.com/share" class="twitter-share-button" data-url="https://twitter.com/share" data-via="josephjohnbless">Tweet</a>
<script>
  window.twttr = (function (d,s,id) {
      var t, js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;
      js.src="https://platform.twitter.com/widgets.js";
      fjs.parentNode.insertBefore(js, fjs);
      return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });
  }(document, "script", "twitter-wjs"));
</script>
<script>
    twttr.ready(function (twttr) {
        twttr.events.bind('click', function (event) { alert('yes'); });
    });
</script>

供参考,this is the Twitter discussion link.

【讨论】:

  • 这行不通。我有错误 - 无法读取未定义的属性“就绪”