elt.lang ='fr'无法正常工作

时间:2013-08-28 10:55:11

标签: javascript attributes firefox-addon lang

我在Firefox扩展上下文中工作。

问题

我正在尝试创建一个具有特定lang属性的新元素。我尝试How to create HTML element with lang attribute in JavaSript?中给出的方法elt.lang = 'zh'不起作用。该元素已创建,但没有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 /点符号方法不起作用?

2 个答案:

答案 0 :(得分:1)

并非所有可能的HTML属性都反映为javascript setter / getters。例如,https://developer.mozilla.org/en-US/docs/Web/API/Node明确列出textContent,但不列出lang。我建议总是使用setAttribute / getAttribute,除了可能最基本的属性,如“src”或“href”。

答案 1 :(得分:1)

问题

问题与环境有关(即扩展)。我在XUL上下文中,因此使用createElement()创建一个没有lang属性的XUL元素。

因此,要修复问题和其他问题(无法选择插入的文本),我必须强制使用createElementNS(ns, elt)强制XHTML命名空间

代码

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