1

我必须隐藏用户名的最后 5 个字符。下面是代码

<ul>
<li>
            </dl>
                <dl>
                <dt>Username:</dt>
                <dd id="up-d-username">AZRT435231
                </dd>
            </dl>
</li>
</ul>

我需要用“X”替换最后 5 个字符,所以输出应该是 AZRT4XXXXX 。用户是否有可能使用诸如 firebug 之类的工具从页面源中看不到此名称?

4

6 回答 6

5
"AZRT435231".slice(0, -5) + "XXXXX";

用户仍然可以阅读原始页面源。如果这很关键,请在它到达客户端之前使用服务器端语言对其进行处理。

你可以制作一个更便携的版本......

var replaceLastNChars = function(str, replace, num) {
     return str.slice(0, -num) + Array(num + 1).join(replace);
};

结合它...

$("#up-d-username")
 .text(function(i, text) { return replaceLastNChars(text, "X", 5); });

没有 jQuery,为了好玩...

var elem = document.getElementById("up-d-username").firstChild;

elem.data = replaceLastNChars(elem.data, "X", 5);

较新的浏览器...

var elem = document.querySelector("#up-d-username");

elem.textContent = replaceLastNChars(elem.textContent, "X", 5);
于 2013-01-24T06:35:58.260 回答
3

你可以这样做。

现场演示

txt = $.trim($('#up-d-username').text());
$('#up-d-username').text(txt.substring(0, txt.length - 5) + "XXXXX");
于 2013-01-24T06:36:53.210 回答
1

您应该使用服务器端语言隐藏它,这样用户就没有机会使用调试工具看到它。

<?php
$username = "AZRT435231";
$output = substr($username, 0, -5) . "XXXXX";
?>
<ul>
<li>
            </dl>
                <dl>
                <dt>Username:</dt>
                <dd id="up-d-username"><?=$output?>
                </dd>
            </dl>
</li>
</ul>
于 2013-01-24T06:36:33.970 回答
1

另一种选择是使用正则表达式,然后用“X”字符替换匹配的字符串。

http://jsfiddle.net/uvDs8/

var re = /(.{1,5})$/;
var tester = "1234567890";

var new_value = tester.replace(re, function (matched) {
    return Array(matched.length+1).join("X");
});

alert(new_value);

在这种情况下,它只替换尽可能多的内容(字符串末尾最多 5 个)。因此,如果原始值只有 4 个字符长,则结果是 4 个“X”字符。如果结果是 6 个字符长,则结果是第一个字符加上 5 个“X”字符。等等。

于 2013-01-24T06:56:54.933 回答
0

执行此操作的香草 JS 方法是:

 var name = document.getElementById('up-d-username');

 name.innerHTML = name.innerHTML.slice(0, -5) + "XXXXX";

使用 jQuery,您可以执行以下操作:

var $name = $('#up-d-username');

$name.html( $name.html().slice(0, -5) + "XXXXX" );

在替换发生之前,浏览器可以使用数据的瞬间。如果有人简单地卷曲 URL,他们就可以访问信息。您最好的选择是在将其发送到浏览器之前将其替换为服务器端。

于 2013-01-24T06:39:49.133 回答
0

在普通的 JS 中。还解决了字符串长度未知的问题。

    let mask='X'.repeat(5),
        username=document.getElementById('up-d-username');

    username=username.substring(0,username.length-mask.length)+mask;
于 2022-01-24T19:38:21.773 回答