xml / xul通过javascript访问dtd变量

时间:2014-04-15 14:30:04

标签: javascript xml xul

我想通过javascript动态创建一个xul / xml元素,如:

var toolbarbutton = document.createElement("toolbarbutton");
toolbarbutton.setAttribute("tooltiptext", "&variable;");

“variable”在我的dtd文件中设置但我无法使用这些代码访问它。 我知道如果我直接在我的xul / xml文件中创建了元素,我就可以编写如下内容:

<toolbarbutton tooltiptext="&variable;">

动态编写它不起作用。它只是放了“&amp; variable;”。你知道为什么吗?

1 个答案:

答案 0 :(得分:0)

只有在解析XML文档时才会考虑DTD。

一个有效的解决方法是简单地将DTD“变量”放在XML(因此是DOM)的某个地方,在那里他们不打扰,然后根据需要阅读它们。

<someelement id="someelement"
  data-myaddon-active="&tooltip.active;"
  data-myaddon-inactive="&tooltip.inactive;"></overlay>

data-*除了您的插件外没有任何其他处理

var someelement = document.getElementById("someelement");
var toolbarbutton = document.createElement("toolbarbutton");
toolbarbutton.setAttribute("tooltiptext", somelement.getAttribute("data-myaddon-active");

这个 hack 也在整个常规的mozilla代码库中使用,例如: browser.xul有:

<window id="main-window"
        ...
        title="&mainWindow.title;"
        title_normal="&mainWindow.title;"
        title_privatebrowsing="&mainWindow.title;&mainWindow.titlemodifiermenuseparator;&mainWindow.titlePrivateBrowsingSuffix;"
        ...>

然后在运行时使用以下内容:

if (private)
  document.title = mainWindow.getAttribute("title_privatebrowsing");