elt.lang = 'FR' 不工作(elt.lang = 'fr'

2019-10-29 05:04发布

我在Firefox扩展的环境中工作。

问题

我试图创建一个特定的新元素lang属性。 我试过方法elt.lang = 'zh'中给出如何与郎JavaSript属性创建HTML元素? 好好尝试的工作。 该元素创建,但没有lang属性。

工作不正常的代码

var wrapper = document.createElement("span");
  var zh = document.createElement("i");
    zh.textContent = symbol;
    zh.lang= "zh-cmn"; // <-- -- -- -- -- -- --
  var srcText = document.createTextNode('blablabla');
wrapper.appendChild(zh);
wrapper.appendChild(srcText);

按预期运行代码

然而,当我使用Element.setAttribute()方法,它工作正常:

zh.setAttribute('lang','zh');

为什么elt.lang /点符号的做法不工作?

Answer 1:

并非所有可能的HTML属性体现为JavaScript的制定者/吸气。 例如, https://developer.mozilla.org/en-US/docs/Web/API/Node明确列出的textContent,但不是lang 。 我总是通过使用setAttribute /的getAttribute,除了可能是最基本的属性,如“SRC”或“HREF”建议。



Answer 2:

问题

这个问题是关系到环境(即扩展名)。 我是在一个XUL上下文,这样使用createElement()创建其中没有一个XUL元素lang属性。

因此,要解决的问题和其他(没有办法选择插入的文本),我不得不强迫XHTML命名空间createElementNS(ns, elt)

var nsXHTML = "http://www.w3.org/1999/xhtml";
var wrapper = document.createElementNS(nsXHTML, "span");
var zh = document.createElementNS(nsXHTML, "i");
zh.lang= "zh-cmn";


文章来源: elt.lang = 'fr' not working