html 显示 %3c,HTML没有显示已解码的%3C?(HTML does not show decoded %3C?)

HTML没有显示已解码的%3C?(HTML does not show decoded %3C?)

以下代码块类似但具有不同的输入字符串,因此结果不同:

// This does not change HTML

var str = "%3Cdiv%3E"; //

var str_dec = decodeURIComponent(str);

console.log(str_dec); // Console output is `

`

document.getElementById("p1").innerHTML = "1: " + str_dec; // No HTML output

// This works fine within HTML

var str = "%3C0%3E"; // <0>

var str_dec = decodeURIComponent(str);

console.log(str_dec); // Console output is `<0>`

document.getElementById("p2").innerHTML = "2: " + str_dec; // HTML output is `<0>`

虽然,控制台显示解码在第一种情况下工作正常,为什么它没有出现在HTML中?

Following blocks of code are similar but have different input strings and hence different results:

// This does not change HTML

var str = "%3Cdiv%3E"; //

var str_dec = decodeURIComponent(str);

console.log(str_dec); // Console output is `

`

document.getElementById("p1").innerHTML = "1: " + str_dec; // No HTML output

// This works fine within HTML

var str = "%3C0%3E"; // <0>

var str_dec = decodeURIComponent(str);

console.log(str_dec); // Console output is `<0>`

document.getElementById("p2").innerHTML = "2: " + str_dec; // HTML output is `<0>`

Although, console shows that decoding works fine in first case, why it does not appear in the HTML?

原文:https://stackoverflow.com/questions/41775287

更新时间:2019-12-04 08:24

最满意答案

这是因为<0>不是有效的HTML标记,因为SGML(以前从HTML派生的语言)标记不能以数字开头:

元素名称紧跟在标记打开分隔符后面。 元素名称由一个字母后跟最多72个字母,数字,句点或连字符组成。 名称不区分大小写。

由于代码分配了Element的innerHTML属性,浏览器会尝试将值解析为HTML,而不是将<0>视为HTML元素,而是选择将其视为文本值; 而

是一个有效的HTML元素,因此浏览器将其视为有效。

如果你在控制台中检查输出,你实际上会在段落p1 (和p2的字符串<0> )中看到一个空的

DOM节点:

9I4xy.png

如果您不希望浏览器将指定的值解析为HTML,请使用更安全,更简单的textContent属性。

This is because <0> is not a valid HTML tag, as SGML (the language which HTML used to be derived from) tags cannot begin with a digit:

The element name immediately follows the tag open delimiter. An element name consist of a letter followed by up to 72 letters, digits, periods, or hyphens. Names are not case sensitive.

Since the code is assigning the innerHTML property of an Element, the browser tries to parse the value as HTML and isn't treating <0> as an HTML element, instead opting to treat it as a text value; whereas

is a valid HTML element, so the browser treats it as such.

If you inspect the output in the console, you'll actually see an empty

DOM node inside the paragraph p1 (and the string <0> in p2):

9I4xy.png

If you don't want the browser to parse the assigned value as HTML, use the safer, simpler textContent property instead.

相关问答

慢慢熟悉 慢慢联系, 熟悉个个英雄的操作, 之后是知道沉默 带晕人的英雄晕人都是几秒 最之后是A怪 也就是打钱的速度啊 ! 没事多看看录像什么的, 经常跟比你厉害的选手一起玩, 这样能锻炼你的手法,明白自己每一场输在哪,加强练习 ,不是一天两天的事,慢慢来, 个人意见 仅供参考。

没什么 不过玩得好3C的人应该有建造基础 我玩了2年建造才玩3C的 但是我玩了一个月的3C就能和玩2年多的人对抗了 因为我操作比较好 APM180+ 而且我打多了建造的意识好 容易形成意识 到了3C的话意识很少 我们班一个高手简单和我说说 然后在VS打上一个月多几天 现在都能和些VS7-10的人有一拼了 操作是问题 新手的话可能操作3个已经很极限的了 所以要打好基础 3C人人都会 不就是放个技能跑来跑去嘛 但是队友一看你没经验 没PK意识 不会跑位 不会抓人 VS上的人一看见不会玩马上退 而且不会

...

妹子...哥教你吧...

CHYY的 土豆网视频 http://www.tudou.com/home/chyaya 小智土豆视频 http://www.tudou.com/home/item_u7493586s0p1.html 澄海官网 有录像和视频链接 http://ch.uuu9.com/

错!不要去U9论坛`现在的澄海高手都拽的要死`\

技术好点有什么了不起`他们瞧不起新手!

妈的!我跟你讲怎搞`你下胤真的录像

下过了自己慢慢看里面一个动作和操作都不会少一下

所谓学习不是全靠别人教大部分靠自己自学!

给你介绍一部录像是胤真VS沙加.败!这部我个人认为最经典!

我建议你要练就练1V1光明打好光明绝对是强!

因为现在玩ES的很多`光明很少赢`但光明要发挥好了是很强大的!

首先我给你介绍下光明5雄:首发AM 2发GA 3发小Y 4发KOG 5发BM 6发白虎!

合格时间

...

ES开时候升网(快捷建E)先拉下龙,然后拉中龙 具体操作时,跑过去,对这龙射一剑,然后马上跑回去,站在高塔和高塔下面那个白色的塔中间的那个塔之间,看着龙飞过来,在它转身向回飞的时候马上抓住,(占住位置和龙转身之间有点时间,这时候一定要把快捷建准备好)上中下3龙地抓法都一样,但是前提必须是下面没有小兵,前期先别打石头人,这样能抓两条,抓完两条正好步兵已经出来了,马上就出AC了,抓不了了.

你去找YY的视频。 很多的。多看。那就有走位。 打钱。 进步超快。我就是看他视频过来的。 我以前es五分多出奶。现在就4分内。 AM以前老6分6分的.现在5分多一点点.进过4分50. 刚看了你要图文的。我只看过ES的.没有见过AM . 看视频的.就可以帮助你.我给你视频.你直接放到手机里. 仔细看.PK.打钱.下塔.3英雄PK.视频里都会遇到. 354261018我Q

这是因为<0>不是有效的HTML标记,因为SGML(以前从HTML派生的语言)标记不能以数字开头: 元素名称紧跟在标记打开分隔符后面。 元素名称由一个字母后跟最多72个字母,数字,句点或连字符组成。 名称不区分大小写。 https://www.w3.org/MarkUp/html3/HTMLandSGML.html 由于代码分配了Element的innerHTML属性,浏览器会尝试将值解析为HTML,而不是将<0>视为HTML元素,而是选择将其视为文本值; 而

是一个有效的HTML元素,因

...

你的数据是一个包含字典的列表 你可以使用decoded[0]['c']因为字典是列表的第一个元素 另一种可能性是你应该使用data = {u'a': u'A', u'c': 3, u'b': [2, 4]} (没有方括号) 这实际上取决于数据是字典列表还是字典 your data is a list containing a dictionary you can use decoded[0]['c'] since the dictionary is the first element of the

...

json.loads加载一个字符串 ,所以你需要先读取文件的内容。 即。 with open(filename, 'r') as input_file:

data = json.loads(input_file.read())

或者,使用.load并传递一个文件对象,即。 with open(filename, 'r') as input_file:

data = json.load(input_file)

编辑:你不需要.read()在返回数据之前,因为json.load方法

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值