我在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
/点符号方法不起作用?
答案 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";