【问题标题】:Change Twitter Widget appearance on-the-fly即时更改 Twitter 小部件的外观
【发布时间】:2013-12-21 12:21:09
【问题描述】:

我的文档中有以下代码:

<a class="twitter-widget" href="url" data-widget-id="138843679974442730">Twitter Timeline</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

data-widget-id 与一种样式相关联。现在,如果网站上的主题发生变化(我替换了所有负责的样式表和图像),除了 Twitter 小部件之外,一切都会发生变化。

由于小部件本身是一个 iframe,我无法更改附加到它的任何样式表。

有没有一种简单的方法可以在不重新加载的情况下更改小部件的样式(删除标签、创建标签、运行 js)?

【问题讨论】:

    标签: javascript jquery css twitter


    【解决方案1】:

    您可以使用 JavaScript 为 Twitter 小部件 iframe 中的元素设置样式。

    首先,您需要 iframe 的嵌套浏览上下文中的活动文档:

    var doc = document.getElementById("twitter-widget-0").contentDocument;
    

    然后,您可以应用样式(例如):

    doc.querySelector(".timeline-header").style["background-color"] = "black";
    doc.querySelector(".timeline-header a").style["color"] = "white";
    

    示例:http://codepen.io/smockle/pen/IJHnj

    【讨论】:

    【解决方案2】:

    没有直接的方法可以做到这一点,所以我决定引入另一个会延迟 onload 事件的依赖项。

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

    这是完成这项工作的代码:

    var twitterBox = document.getElementsByClassName("twitterBox");
    if (!twitterBox || twitterBox.length == 0) { return true; }
    var twitterTimeline = document.createElement('a');
    twitterTimeline.className = 'twitter-timeline';
    twitterTimeline.href = 'url';
    twitterTimeline.innerHTML = 'Twitter Timeline';
    twitterTimeline.setAttribute('data-widget-id', '388742673974046720');
    twitterBox[0].removeAttribute('data-twttr-id');
    twitterBox[0].innerHTML = '';
    twitterBox[0].appendChild(twitterTimeline);
    twttr.widgets.load();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多