【问题标题】:Incorporate variable into default tweet query string parameters将变量合并到默认推文查询字符串参数中
【发布时间】:2014-07-21 23:11:35
【问题描述】:

所以我正在制作一个包含简单 javascript/HTML 计时器的网站。下面列出了计时器的代码。

我正在将推文系统整合到网站中。我的目标是让这个推文按钮发推文“我持续了(时间变量)”。我在这样做时遇到了麻烦,因为 twitter API 似乎有点限制。配置默认推文文本的唯一方法是通过查询字符串参数。有什么方法可以将变量(来自下面的代码)合并到查询字符串参数中,还是我需要用更复杂的方法?

我考虑过用 php 来做变量系统,但是这段代码在执行时需要非常轻量级,因此我想避免使用 php。即使我确实使用 php 执行此操作,我也会遇到同样的问题:如何将变量合并到设置默认推文的查询字符串参数中。

TL;DR:如何将变量合并到查询字符串参数中(关于 Twitter 的默认推文文本 API)。

以下是 twitter 处理默认推文文本的方式:

 <a href="https://twitter.com/share*?text=I%20lasted%20#seconds*" class="twitter-share-  button" data-lang="en">Tweet it</a>   

这是我正在使用的计数器的代码。

<label id="minutes">00</label>:<label id="seconds">00</label>
<script type="text/javascript">
    var minutesLabel = document.getElementById("minutes");
    var secondsLabel = document.getElementById("seconds");
    var totalSeconds = 0;
    setInterval(setTime, 1000);

    function setTime()
    {
        ++totalSeconds;
        secondsLabel.innerHTML = pad(totalSeconds%60);
        minutesLabel.innerHTML = pad(parseInt(totalSeconds/60));
    }

    function pad(val)
    {
        var valString = val + "";
        if(valString.length < 2)
        {
            return "0" + valString;
        }
        else
        {
            return valString;
        }
    }
</script>

谢谢

【问题讨论】:

  • 我可能误解了这一点,但是,为什么你不能用你的脚本为href 构建字符串并在必要时更改属性?这样,您只需要将文本附加到href 就可以了。使用encodeURI() 可能是helpful
  • 对不起,我对此很陌生。我该怎么做呢?我浏览了一些对 encodeURI() 的不同描述,但我就是想不通。如果这是一个不好的问题,我很抱歉。

标签: javascript php html twitter


【解决方案1】:

这里是:http://jsfiddle.net/7zKAy/

如您所见,我通过 javascript 更改了链接的 href。忽略 CSS 和样式,它只是为了展示和更好的展示。

首先获取对您的链接的引用并设置您将要使用的网址的基础:

var butt = document.getElementById('sharebutton');

var basehref = "https://twitter.com/share?text=";

然后,当您有文本要发送时,构建完整的 URI。这是一种方法:

// so i want to add "I lasted 345345334 seconds" to the text

basehref = "https://twitter.com/share?text=" + "\"" + encodeURIComponent("I lasted 345345334 seconds") + "\"";

请注意,我在字符串末尾手动添加了",并且仅使用encodeURIComponent 对内容进行编码,如果您想编码URI 的part 而不是所有的。如果我要一次性完成所有事情,我会这样做:

encodeURI(basehref);

然后,将这个新的 href 附加到您的按钮:

butt.setAttribute('href', basehref);

你就完成了。当您将鼠标悬停在链接上时,该链接可能会被浏览器转义,因此请检查您的控制台以查看应用于href 属性的实际字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2014-04-25
    相关资源
    最近更新 更多