我想通过javascript动态创建一个xul / xml元素,如:
var toolbarbutton = document.createElement("toolbarbutton");
toolbarbutton.setAttribute("tooltiptext", "&variable;");
“variable”在我的dtd文件中设置但我无法使用这些代码访问它。 我知道如果我直接在我的xul / xml文件中创建了元素,我就可以编写如下内容:
<toolbarbutton tooltiptext="&variable;">
动态编写它不起作用。它只是放了“&amp; variable;”。你知道为什么吗?
答案 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");