javascript - 零宽度空间使 HTML 链接无法点击

标签 javascript html django unicode zero-width-space

我正在根据用户为该页面指定的名称创建指向该页面的链接。但是,如果名称是零宽度空格,则该链接无法单击。

如何阻止用户为页面指定不可点击的名称?如果可能的话,我希望允许使用 Unicode 字符。

名称通过 Django 表单输入数据库,并且 HTML 链接正在 jQuery 中构建。如果名称是常规空格,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>

最佳答案

检测零宽度空间并将其替换为空或空白空间。然后,在创建链接时,要么跳过该文本(如果为空,则不显示链接),要么显示默认链接文本,例如“单击此处”。

这里是一些检测零宽度空格并将其替换为空字符串的代码:

linkText2 = linkText2.replace(/\u200B/g,'');

如果给定为空,我们在这里设置默认值:

linkText2 = (linkText2 == '') ? "Click Here" : linkText2;

关于javascript - 零宽度空间使 HTML 链接无法点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788114/

相关文章:

django - EmailBackend用于在Django中通过多个SMTP发送电子邮件

javascript - NoReverseMatch,反向登录未找到错误

javascript - http ://. 的正则表达式 .. 在 <a> 之外

javascript - MarkLogic 8 Ingestion Job 在 JavaScript 中对集合进行非规范化

javascript - 尝试调用休息函数时,Angular dataService.init 不是函数

javascript - 无法从数组中过滤对象

javascript - Scrollspy 不工作 - Bootstrap 4 Beta

css - figcaption 标签在 figure 标签中图像上的居中和对齐宽度

python - Elastic Beanstalk 最大环境变量长度

javascript - 如何绑定(bind)PhoneJs中两个表的数据?