6

我知道推特说用户不应该在推文中使用新行,因为它是否显示取决于客户端,但我编写了一个将推文绘制到推特时间线的应用程序 aLa http://www.drawatweet.com。所以它是必须的。

问题是,在我尝试了所有可能的方法之后,我无法强制将推文分成多行。我已经修改了他们发布它的方式,并发送了与 drawatweet.com 不显示的完全相同的“换行符”代码。

我尝试使用 twitter api 和 twitter 意图推文页面但没有成功。

另一个例子是它的http://www.preservatweets.com/使用多行来显示消息,而且,我再次使用相同的机制,但我的新行不起作用。

我开始认为 Twitter 对这个“应用程序”有一些安排,并且它正在被推荐人检查。我知道这听起来很疯狂,但我找不到另一个合乎逻辑的答案。有人知道它是如何工作的吗?

更新

不可能在 twitter 中使用新行。我要做的是生成非常大的字符串(内部没有空格)和新行(或空格),如果两个字符串都不可分割,将强制换行。

在此先感谢贡萨洛

4

2 回答 2

16

最简单的方法是..

var msg = "This is a test message. \n is used for new line character.";
var twitterHref = "http://twitter.com/intent/tweet?text=" + escape(msg);

然后将其动态设置为您的<a/>.

于 2013-10-02T13:47:16.147 回答
3

Twitter 的网站从不在推文中显示新行,看起来就是这样。有些客户端会显示新行,但 Twitter 不会。他们只是将它们显示为空间。不过,他们确实在推文中留下了实际的换行符。

看起来drawatweet 工作的原因是因为自动换行。使用什么字符或字符集并不重要,使用多少字符也不重要。如果推文中的下一个单词太长而无法容纳其段落的宽度,它将换行。他们用块字符制作了“单词”(不含空格的字符串),但您可以使用任何您想要的字符。

要对此进行测试,请将它们的新行替换为空格。它仍然包裹。您还可以在第二行添加一个空格,您会看到新行没有保留,因为第二行的第一部分现在将位于第一行。用您自己的角色替换积木,它也会起作用。

所以解决方案是像他们一样伪造它,并使线条足够长以始终换行。如果您正在处理单个“单词”,您可以使用 unicode no-break space( %C2%A0) 替换您不希望它换行的空格。您也可以用它填充短线,以使它们足够长以包裹。

演示: jsFiddle

<a href="https://twitter.com/intent/tweet?text=123456789012345678901234567890%0A123456789012345678901234567890%0A123456789012345678901234567890" target="_blank">long lines with \n - works!</a><br />
<a href="https://twitter.com/intent/tweet?text=123456789012345678901234567890%20123456789012345678901234567890%20123456789012345678901234567890" target="_blank">long lines with spaces instead of \n - works! (same as \n)</a><br />
<a href="https://twitter.com/intent/tweet?text=123456789012345678901234567890%0A12345678 9012345678901234567890%0A123456789012345678901234567890" target="_blank">long lines with \n - space in line - doesn't work</a><br />
<a href="https://twitter.com/intent/tweet?text=123456789012345678901234567890%0A12345678%C2%A09012345678901234567890 %0A123456789012345678901234567890" target="_blank">long lines with \n - no-break space (%C2%A0) in line - works!</a><br />
<a href="https://twitter.com/intent/tweet?text=12345678901234567890%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%0A12345678901234567890%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%0A12345678901234567890" target="_blank">short lines with \n - no-break space (%C2%A0) padding - works!</a><br />
于 2013-02-27T21:48:34.007 回答