我正在根据用户为该页面命名的名称来创建该页面的链接。但是,如果名称为零宽度空格,则该链接不可单击。
如何阻止用户为页面提供不可点击的名称?如果可能,我想允许使用Unicode字符。
通过Django表单将名称输入数据库,并在jQuery中构建HTML链接。 Django抱怨名称是否为常规空格,但接受零宽度的空格。
var linkText1 = 'foo', linkText2 = '\u200b';
$('#ex1')
.append($('<a>')
.text(linkText1)
.attr('href', 'javascript:alert("clicked.")'));
$('#ex2')
.append($('<a>')
.text(linkText2)
.attr('href', 'javascript:alert("clicked.")'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="ex1">Example 1 </p>
<p id="ex2">Example 2 </p>
答案 0 :(得分:1)
检测零维特空间并将其替换为空或空空间。然后,在创建链接时,请跳过该文本(如果为null,则不显示任何链接),或显示默认链接文本,例如“ Click Here”。
这里有一些代码可以检测零宽度空间并将其替换为空字符串:
linkText2 = linkText2.replace(/\u200B/g,'');
如果给定为空,我们在此处设置默认值:
linkText2 = (linkText2 == '') ? "Click Here" : linkText2;
答案 1 :(得分:0)
受Nawed's answer和devdob's comments的启发,当链接文本不包含任何字母或数字时,我决定添加一个后缀。这样可以避免损坏任何有用的Unicode文本,但应始终提供可用的链接。
不幸的是,它对Unicode并不明智。例如,中文单词将始终带有链接后缀。
一些改进的选择:
function addLink($p, linkText) {
if ( ! /\w/u.test(linkText)) {
linkText += ' [link]';
}
$p.append($('<a>')
.text(linkText)
.attr('href', 'javascript:alert("clicked.")'));
}
var linkText1 = 'foo', linkText2 = '\u200b', linkText3 = '网站';
addLink($('#ex1'), linkText1);
addLink($('#ex2'), linkText2);
addLink($('#ex3'), linkText3);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="ex1">Example 1 </p>
<p id="ex2">Example 2 </p>
<p id="ex3">Example 3 </p>