Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这是有效的id属性吗?如果是,为什么可以';我不理解这个_Javascript_Jquery_Jsp_Encryption - Fatal编程技术网

Javascript 这是有效的id属性吗?如果是,为什么可以';我不理解这个

Javascript 这是有效的id属性吗?如果是,为什么可以';我不理解这个,javascript,jquery,jsp,encryption,Javascript,Jquery,Jsp,Encryption,出于某种安全目的,我希望将元素的id设置为我们的任务dxcr/+dvmuofax4m2eutug==,为此,我解密了一些字符串并添加了id。但当我试图使用这个id执行操作时,javascript会限制我这样做 Uncaught Error: Syntax error, unrecognized expression: #OUR_MISSIONIDxcR/+dvmUOfaxP4M2eutUg== 然而,在jsp页面中,我创建了如下元素 <span id="#OUR_MISSIONIDxcR

出于某种安全目的,我希望将元素的id设置为
我们的任务dxcr/+dvmuofax4m2eutug==
,为此,我解密了一些字符串并添加了id。但当我试图使用这个id执行操作时,javascript会限制我这样做

Uncaught Error: Syntax error, unrecognized expression: #OUR_MISSIONIDxcR/+dvmUOfaxP4M2eutUg==
然而,在jsp页面中,我创建了如下元素

<span id="#OUR_MISSIONIDxcR/+dvmUOfaxP4M2eutUg=="> </span>

作为标记,id标记必须以字母([a-Za-z])开头,后面可以是任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“)、冒号(:”)和句点(.”)。因此,要回答您的问题,不,这不是有效的id属性值


编辑:在中,它表示它可以包含任何字符。但请注意,它还建议:“标识符是不透明的字符串。不应从id属性的值中派生特定含义。”因此,如果您关心安全性,请尝试另一种方法。

您需要做的是转义非字母数字字符

要使用任何元字符(例如 !“#$%&'()*+,./:;?@[\]^`{124;}~)作为名称的文字部分,它必须 可以用两个反斜杠转义:\\。例如,一个元素 id=“foo.bar”,可以使用选择器$(“#foo\\.bar”)


请参见HTML4中的一些规则来声明“id”:

  • 它必须以字母([a-Za-z])开头,后面可以跟任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“389;”)、冒号(:”)和句点(.”)
  • HTML5甚至更为宽松,只是说id必须至少包含一个字符,并且不能包含任何空格字符
有些浏览器可能支持在ID或名称标记中使用“#”,但我认为应该避免使用某些字符,如

  • 时期
  • 科隆
  • #

  • 因为它们在CSS选择器中有特殊的意义,所以您必须使用CSS中的反斜杠或传递给jQuery的选择器字符串中的双反斜杠来转义这些字符。

    在这里工作:(Chrome,FF)为什么需要将敏感数据放在HTML元素属性中,只是好奇而已?@Giladd在我的Chrome浏览器中不工作。