代码之家  ›  专栏  ›  技术社区  ›  noah

HTML中字符串的不可见分隔符

  •  52
  • noah  · 技术社区  · 14 年前

    我需要一种方法来识别HTML标记中的某些字符串。我知道字符串是什么,但它们可能是文档中其他字符串的子字符串。为了找到它们,我输出一个特殊的分隔符字符(当前使用 \032 )在页面加载时,我们遍历HTML并记录字符串的位置,然后删除分隔符。

    不幸的是,大多数浏览器都会显示分隔符,直到我们找到并删除它们为止。如果可能的话,我想避免这种情况。是否有一个字符或字符串将保留在HTML内容中(因此注释不起作用),但对用户不可见?它也需要是一些不太可能出现在字符串旁边的东西,所以   也不行。

    编辑:对不起,我忘了提到字符串将在属性中,所以任何类型的标签都不起作用。

    4 回复  |  直到 8 年前
        1
  •  136
  •   Anon    14 年前

    ‌ -零宽度非连接件(参见 http://htmlhelp.org/reference/html40/entities/special.html )

    如果这已经出现在您的文本中,请将其加倍(例如: ‌‌mytext‌‌


    根据评论进行编辑:适用于firefox 3。请注意,您必须搜索实体的Unicode值。

    <html>
    <body>
        <div id="test">
            This is a &zwnj;test
        </div>
    
        <script type="application/javascript">
            var myDiv = document.getElementById("test");
            var content = myDiv.innerHTML;
            var pos = content.indexOf("\u200C");
            alert(pos);
        </script>
    </body>
    </html>
    
        2
  •  5
  •   amphetamachine    14 年前

    你可以把它们插入 <span> 元素。这只适用于页面内文本(而不是属性等)。

    否则,可以插入程序尚未作为HTML的一部分输出的空白字符,如制表符。( \x09 )垂直标签( \x0b )空车返回( \x0d )-旁边没有换行符,ala windows文本编码-或者,只是一个空字节( \x00 )

        3
  •  3
  •   Kangkan    14 年前

    我想插入的最好的东西是一对带有特殊ID的标签,比如 <span id="delimiter" class="Delimiter"></span> . 这不会显示在内容上,但可以显示在文档中。你不需要移除它们。

        4
  •  0
  •   dimo414    8 年前

    你可以使用 left-to-right (LTR) marks . 这是为了某种XSS测试吗?如果是这样,这可能是有意义的: Taint support for PHP