我想知道是否可以将JavaScript蝙蝠侠笑话中的“蝙蝠侠”文本更改为ASCII,然后将其转换并将其显示在浏览器中
原来的笑话是
javascript:Array(16).join("lol" - 1) + "Batman"
可以改为
javascript:Array(16).join("lol" - 1) + [66, 97, 116, 109, 097, 110].forEach(function(e) { document.write(String.fromCharCode(e)); } );
其中[66,97等]是蝙蝠侠的ASCII码。这会失败,因为文档对象不存在于空的浏览器窗口中。
(PS如果不合适,可以随意删除,只是为了好玩)
答案 0 :(得分:1)
您实际上并不需要为数组使用任何类型的循环或迭代器,String.fromCharCode
实际上会接受您想要的任意数量的字符。所以这将很好地工作:
javascript:Array(16).join(-'.') + String.fromCharCode(66, 97, 116, 109, 097, 110);
但是,如果你想为数组的每个元素调用String.fromCharCode
,你可以。可以使用Function.prototype.apply
调用每个JavaScript函数,它将为每个数组元素运行函数:
javascript:Array(16).join("lol" - 1) + String.fromCharCode.apply(this,[66, 97, 116, 109, 097, 110]);
此外,"lol" - 1
的目的是尝试创建一个错误的数字(NaN或非数字)。如果您想进一步混淆事物,可以对非数字字符串使用任何数学运算。例如:
javascript:Array(16).join(-'.') + String.fromCharCode.apply(this,[66, 97, 116, 109, 097, 110])
因为-'.'
被互穿为0 - '.'
,它没有任何意义所以它是NaN。
答案 1 :(得分:0)
你可以这样做:
javascript:var str='';[66, 97, 116, 109, 097, 110].forEach(function(e) { str+= (String.fromCharCode(e)); } ); Array(16).join("lol" - 1) + str;
或者:
javascript:Array(16).join("lol" - 1) + [66, 97, 116, 109, 097, 110].map(function(e) { return (String.fromCharCode(e)); }).join('');