【问题标题】:A different way to write the element ID? [closed]编写元素 ID 的不同方式? [关闭]
【发布时间】:2018-09-21 23:44:41
【问题描述】:

下面我有这一行 javascript。我想知道是否有另一种方法可以编写 name-id 标签(元素 ID)。那么我可以用不同的方式来写它,意思是一样的吗? ASCII形式的例子?

我知道在 C 中我可以用 ASCII 格式写这个。

var myname = document.getElementById("name-id").innerHTML;

【问题讨论】:

  • 真的不清楚你在问什么。你是什​​么意思“以不同的方式”?请更具体地说明您要完成的工作。
  • 你使用的所有字符都已经出现在 ASCII 中了。
  • @jered 就像我提供的那行代码一样,我可以用不同的方式编写name-id,它仍然意味着name-id
  • @James — 为什么?你想解决什么问题?
  • 我可以用不同的方式写name-id,它仍然意味着name-id吗?什么意思?

标签: javascript document innerhtml getelementbyid


【解决方案1】:

您可以在官方ECMAScript documentation中找到当前JavaScript实现中字符编码的技术细节。

ECMAScript 代码使用 Unicode 版本 8.0.0 或更高版本表示。 ECMAScript 源文本是一系列代码点。从 U+0000 到 U+10FFFF 的所有 Unicode 代码点值,包括代理代码点,都可能出现在 ECMAScript 语法允许的源文本中。

如果对技术方面不太感兴趣并且需要混淆器服务,请使用其中任何一个或比较它们。只需最少的努力,您就可以制作出这样的东西:

var _0x2245=['innerHTML','querySelector'],x="tell_me_a_nice_story"
.split("_"),y="#"+x[3][0]+"a"+x[1]+"-"+x[3][1];_0x2245.push(y+"d")
,function(x0,x){!function(x){for(;--x;)x0.push(x0.shift())}(++x)}(
_0x2245,4e3);var _0x1144=function(x0,x0x0){return _0x2245[x0-=0]},
myname=document[_0x1144("0x0")]( _0x1144("0x1"))[_0x2245[+2e0+0]];

console.log(myname);
<div id="name-id"
>Why would you do this?
</div>

如果您真的想让其他人难以阅读您代码中的name-id,您可以在上面做很多事情。

您可以编写一些完全不同的东西,包含所有需要的字符或除一个之外的所有字符,稍后您将添加这些字符,使用其他未使用的字母作为分隔符将该字符串拆分为一个数组,从它们的当前位置和位置获取一些数组元素他们在其他位置,加入一些,删除其他人并颠倒其他人的价值。发挥创意。

在上面第二行的末尾,我将innerHTMLquerySelector#name-id 作为同一数组的成员。只有name-id 是从tell_me_a_nice_story 进行mambo-jambo 编辑的,但我可以很容易地从稍长的文本中生成innerHTMLquerySelector,只要它包含大部分必需的字母。把它想象成一轮拼字游戏。

“代码块”的最后一行可以替换为以下任何内容:

myname=document.getElementById(_0x2245[1].substring(1)).innerHTML;
myname=document.getElementById(_0x1144(1).substring(1)).innerHTML;
myname=document.querySelector(_0x1144(1)||_0x2245(1e0)).innerHTML;
myname=document.querySelector(_0x2245[`1`]||_0x1144(1)).innerHTML;
myname=document[_0x1144(0e3)](_0x2245[1-0]||"\_(ツ)_/").innerHTML;

或无数其他变体,“有点”回答您的问题并适合字符数:66

但是,让我们明确一点:任何精通 JavaScript 的人都可以毫无问题地调试您的代码或 console.log()-ing 您最后一步的结果,以便在几秒钟内获得价值。

平心而论,您没有服务器就无法真正在 JavaScript(前端)中隐藏任何内容(以运行适当的加密服务)。

【讨论】:

    【解决方案2】:

    元素 ID 自动成为全局 window 对象中的属性,因此您可以编写:

    var myname = window['name-id'].innerHTML;
    

    由于window 属性是全局变量,您也可以将其作为变量访问,但前提是ID 是有效标识符。由于标识符名称中不允许使用-,因此您不能使用name-id 执行此操作。但如果你有:

    var myname = document.getElementById("someid").innerHTML;
    

    你可以这样写:

    var myname = someid.innerHTML;
    

    但是,我并不真正推荐这个,我只是为了演示目的而展示它。如果元素 ID 与标准 window 属性(例如 locationdocument)相同,则标准属性优先。

    Do DOM tree elements with ids become global variables?

    【讨论】:

    • 什么?我不明白!
    • 你不明白什么?
    • 什么是var myname = someid.innerHTML? someid 在哪里声明?你是想说这个吗:window['someid'] = document.getElementById('someid'); var myname = someid.innerHTML
    • 我在答案开头说的。如果您有一个带有id="someid" 的元素,则会自动创建window.someid
    • 不清楚@Barmar
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 2011-07-11
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    相关资源
    最近更新 更多