Javascript 使用零宽度空间和execCommand(“复制”)时发生冲突
我会尽可能简单地解释我的意思。 我想向用户显示一个弹出窗口,其中包含要复制(动态创建)的url链接,例如(在实际中,文本要长得多): 为了正确地显示这一点(我的意思是很好地打断这一行以适应弹出窗口),我使用了零宽度空间Javascript 使用零宽度空间和execCommand(“复制”)时发生冲突,javascript,jquery,css,Javascript,Jquery,Css,我会尽可能简单地解释我的意思。 我想向用户显示一个弹出窗口,其中包含要复制(动态创建)的url链接,例如(在实际中,文本要长得多): 为了正确地显示这一点(我的意思是很好地打断这一行以适应弹出窗口),我使用了零宽度空间因此代码如下所示: var url = "http://myweb.com/en/728,​1,​5a2a16,​5e4f4f,​4a3f7a,​12,&a
代码>因此代码如下所示:
var url = "http://myweb.com/en/728,​1,​5a2a16,​5e4f4f,​4a3f7a,​12,​12";
$("#content").html(url);
接下来,当弹出窗口出现时,我可以通过选择所有内容并使用ctrl+c复制此文本,或者只需单击一个按钮来自动复制我用于该文本的一段谷歌代码:
window.getSelection().removeAllRanges();
var seltext = document.querySelector("#content");
var range = document.createRange();
range.selectNode(seltext);
window.getSelection().addRange(range);
var successful = document.execCommand("copy");
当我复制URL(无论以何种方式)并将其粘贴到浏览器中并点击enter键后,问题就开始了,然后我得到以下信息:
The requested URL myweb.com/en/728,​1,​5a2a16,​5e4f4f,​4a3f7a,​12,​12,​12 was not found on this server.
当我删除零宽度空格字符并使用$(“#content”).text(url)时,问题就消失了代码>(文本而不是html)但我在正确的长换行时遇到了另一个问题。有人知道如何让这些东西一起工作吗?(因此,行将在我想要的区域断开-逗号后,复制功能不会复制任何额外字符,只是用户在屏幕上看到的字符)我认为最好的解决方案是使用CSS。
请注意,在Firefox&IE中,必须将锚点的display属性设置为block
,否则将无法打断单词
测试1
{字中断:全部中断;宽度:150px;显示:块;}
我认为最好的解决方案就是使用CSS。
请注意,在Firefox&IE中,必须将锚点的display属性设置为block
,否则将无法打断单词
测试1
{字中断:全部中断;宽度:150px;显示:块;}
看这篇文章:这篇文章可能很有趣,但我无法在我的案例中发挥作用。看这篇文章:这篇文章可能很有趣,但我无法在我的案例中发挥作用。谢谢你的回答,现在使用你的解决方案会更好,但我更喜欢在逗号后断线。我想知道第二种方法如何工作(在调用execCommand之前删除空白)。我能想到的唯一方法就是获取内容,删除空白,发回内容,最后运行上面显示的代码,但我不喜欢这个想法。也许有更好的解决方案,但现在我将使用你的建议与css。检查答案,我添加了一个JS代码,涵盖了你所要求的谢谢你,但我认为我会坚持公正的css解决方案(至少现在)谢谢你的回答,现在使用你的解决方案更好,但我更喜欢在逗号后断线。我想知道第二种方法如何工作(在调用execCommand之前删除空白)。我能想到的唯一方法就是获取内容,删除空白,发回内容,最后运行上面显示的代码,但我不喜欢这个想法。也许有更好的方法,但现在我将把你的建议用于css。检查答案,我添加了一个JS代码,涵盖了你为感谢你所要求的内容,但我认为我会坚持使用公正的css解决方案(至少现在)
The requested URL myweb.com/en/728,​1,​5a2a16,​5e4f4f,​4a3f7a,​12,​12,​12 was not found on this server.