在一个巨大的数字表中,我通过用
–
替换所有半可见的减号,使用户体验变得“更丰富”。看起来很棒,进步很大。我正忙着欣赏自己的聪明才智,却忘了注意到地板上的血迹。
因为,来找出答案,当那家伙去选择、复制,然后粘贴(其他地方)这样转换后的减号时,你猜怎么着?它们不再是减号了。
我可以可靠、直接、跨浏览器(包括 Mac 浏览器)使用 onCopy 事件将已(或即将)复制的内容中的
–
字符更改回减号吗?
如果是这样,你有什么建议吗?
我使用原生 JavaScript,不使用任何框架。
我不相信 JavaScript 可以通过某种方式操纵剪贴板中的内容,因为这是操作系统的功能。我相信您可以做的就是在用户将文本粘贴到您选择的字段中后对其进行操作。这是一个 JQuery 的示例:
$('#my_text_field').bind('paste',function()
{
$(this).val($(this).val().replace('–','-'));
}
如果使用 javascript 以编程方式插入,则
–
字符将正确复制/粘贴(并且如果插入实际字符,而不是 HTML 实体)。
也许你可以用类似的东西替换每一个
–
:
<span class="fancyDash"></span>
然后在加载时你可以运行类似的东西:
var longDash = '\u2013';
jQuery.each($(".fancyDash"), function() {
this.innerHTML = longDash;
});
这是一个工作示例:http://jsfiddle.net/m9fhS/
编辑:
或者,如果不使用 jQuery,您可以先修补
document.getElementsByClassName
,以便任何使用 IE 的人都能正常工作,然后执行以下操作:
var longDash = '\u2013';
var spans = document.getElementsByClassName("fancyDash");
for (var index = 0; index < spans.length; index++) {
spans[index].innerHTML = longDash;
}