首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tweet share按钮在登录/注销时不呈现

Tweet share按钮在登录/注销时不呈现
EN

Stack Overflow用户
提问于 2013-03-08 23:28:24
回答 5查看 563关注 0票数 3

我在一个应用程序上使用流星的accounts-ui包和accounts-twitter,它由来自数据库的内容的缩略图组成。每个缩略图也有一个推文分享按钮。我正面临着一个特殊的问题,当用户登录或注销应用程序时,推文按钮不会呈现。

在页面加载时,tweet按钮呈现得很好,但是当用户单击login或logout时,元素要么消失,要么样式消失,只剩下文本。

登录或注销时没有事件处理代码。我已经添加了要点here

是不是跟页面不刷新有关?以前有人注意到过这种行为吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-12 17:41:29

基于@zorlak的回答,我是这样做的:

HTML

代码语言:javascript
复制
<template name="listings">
  {{twitter "@MeteorAtSO"}}
</template>


<template name="twitter">
  <iframe allowtransparency="true" frameborder="0" scrolling="no" 
     src="http://platform.twitter.com/widgets/tweet_button.1362636220.html#_=1363023601135&amp;
       count=none&amp;id=twitter-widget-0&amp;
       lang=en&amp;original_referer=http://localhost:3000&amp;
       text=Check out {{this}}!&amp;
       url=http://localhost:3000"&amp;size=m 
     class="twitter-share-button twitter-count-none" 
     style="width: 58px; height: 20px;" 
     title="Twitter Tweet Button" 
     data-twttr-rendered="true">
  </iframe>
</template>

Javascript

代码语言:javascript
复制
Template.twitter.rendered = function() {
  return !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");
}

而且它运行得非常好!

票数 1
EN

Stack Overflow用户

发布于 2013-03-10 03:06:32

twitter加载的js代码将tweet按钮转换为iframe。我已经通过在检查器中查看生成的iframe,然后更改我的代码来解决这个问题,这样就有了一个带有我在检查器中找到的URL的iframe标记,而不是具有data属性的锚点标记。它也有一个模式,所以你应该能够制作一个模板,用不同的urls呈现不同的按钮。

我认为你现在这样做的问题是,将tweet按钮转换成iframe的twitter代码只运行一次,即使你多次加载脚本。因此,如果您在twitter代码已经运行之后创建一个tweet标记,它将不会被转换为iframe,也不会工作或看起来像一个tweet按钮。

票数 3
EN

Stack Overflow用户

发布于 2013-03-09 15:26:52

尝试替换以使用rendered

代码语言:javascript
复制
Template.twitter.rendered = function() {
  return !function(d,s,id) {
           var js,fjs = d.getElementsByTagName(s)[0];
           if(!d.getElementById(id)){
             js=d.createElement(s);
             js.id=id;
             js.src="http://platform.twitter.com/widgets.js";
             fjs.parentNode.insertBefore(js,fjs);
           }
   }(document,"script","twitter-wjs");
}

不要担心重新渲染的问题,多次添加twitter的api脚本有一个签入,允许它多次运行&只有当它的js被删除时才会执行。

我怀疑重新渲染(在注销/更改反应变量时)正在破坏由用于twitter的api的js为该共享按钮创建的css的链接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15297482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档