【问题标题】:elt.lang = 'fr' not workingelt.lang = 'fr' 不工作
【发布时间】:2013-08-28 10:55:11
【问题描述】:

我在 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/dot-notation 方法不起作用?

【问题讨论】:

  • 我创建了my own test case,在 DOM Inspector 中检查了生成的元素,并看到 lang 属性按预期呈现。我无法重现您的问题。
  • 您是否在 Firefox 扩展的上下文中进行了测试?

标签: javascript attributes firefox-addon lang


【解决方案1】:

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

【讨论】:

【解决方案2】:

问题

问题与环境有关(即扩展)。我在 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";

【讨论】:

    猜你喜欢
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 2014-02-24
    相关资源
    最近更新 更多