【问题标题】:Twitter "Follow" button doesn't appear. Only textTwitter“关注”按钮没有出现。只有文字
【发布时间】:2017-10-05 21:16:57
【问题描述】:

首先,我阅读了thisthisthis 以及许多其他关于“Twitter 按钮无法呈现”的内容。他们都没有解决我的问题。

我有两个彼此靠近的 Twitter 按钮。 Tweet 按钮渲染正常,Follow 按钮不渲染。在 FF 和 Chrome 中都没有向控制台抛出错误或警告。 Twitter 小部件<script> 代码没问题 - 我复制/粘贴它,没有错字或任何东西。

显然这个问题与 Twitter 小部件没有在页面中加载无关,因为“Tweet”按钮显示得很好。

然而,Twitter 给按钮的<a> 元素添加了一个奇怪的类名——twitter-follow-button-error。而整个谷歌关于这个类只有两个结果,两者都不相关。 Twitter API 文档对此只字未提。

可能是什么?这是原因吗?如何解决?

<div key={key}>
    {/* Follow doesn't render */}
    <a className="twitter-follow-button" 
       href={href} data-size="large" 
       data-show-screen-name="true" 
       data-show-count="true">Follow</a>

    {/* Tweet renders all right */}
    <span className={`${css.btn_dist}`}>
        <a className="twitter-share-button"  
           href={href}  
           lang="en" 
           data-size="large">Tweet</a>
    </span>
</div>

【问题讨论】:

  • 而您的 href 变量指向了实际上可以遵循的东西……?
  • 是的,确实如此。这是一个活跃的实时公共 Twitter 帐户
  • 我没有这方面的经验,但您可以尝试 prittyfy twitter JavaScript 并在 chrome 开发工具中使用 control + shift + f 并查找 twitter-follow-error。也许你可以在 JavaScript 中找到它,打破它,看看哪里出了问题。网络中是否有任何失败的 xhr 提供额外信息?
  • 浏览器控制台有错误吗?活生生的例子?

标签: javascript twitter


【解决方案1】:

我可以使用 chrome 61.0.3163.100(官方版本)(64 位)重现您的错误。

当你按下 F12 并加载页面时,它会在 twitter 中中断 JavaScript 拒绝承诺 c.reject(new Error("cannot hydrate widget before it is initialized"))

控制台中没有错误,但在我的 Chrome 版本中出现此错误时会暂停。以下链接有一个使用以下代码的twitter-follow-button-error 类:

    <a class="twitter-follow-button" 
    href="http://www.wut.com" data-size="large" 
    data-show-screen-name="true" 
    data-show-count="true">Follow</a>

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

当使用有效的 href 时,错误就会消失:

    <a class="twitter-follow-button" 
    href="https://twitter.com/TwitterDev" data-size="large" 
    data-show-screen-name="true" 
    data-show-count="true">Follow</a>

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

确保您的开发工具在异常时暂停(我不必检查捕获的异常时的暂停)

【讨论】:

  • 是的。这是帐户 url https://twitter.com/TwitterDev/ 中的尾部斜杠。只是一个尾随斜线。协议(http:https:)和字母大小写无关紧要。但是在所有事情中都会抛出一个尾随的斜线。
  • 如何调试它才能看到错误?我的控制台没有打印任何错误或警告。你是怎么做到的 > 当你按 F12 并加载页面时
  • @Green 我将上面的代码添加到现有项目的页面中,并使用 localhost:8080 上的 webpack 开发服务器运行它(但你可以运行我认为的任何服务器)。打开开发工具并重新加载。也许违反失败的承诺是最新的谷歌浏览器所做的事情,我没有选中“捕获异常时暂停”复选框(在源选项卡中)
猜你喜欢
  • 2016-07-16
  • 1970-01-01
  • 2013-01-25
  • 2021-02-23
  • 2014-01-19
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 2014-08-20
相关资源
最近更新 更多