作者bootleq (下大雨才爽)
看板Ajax
标题[问题] element.setAttributeNS 用法
时间Sat Nov 28 00:00:27 2009
我对 xml namespace 有疑问,不明白 setAttributeNS 的用法。
这问题也 po 在 MozTW 讨论区:
http://forum.moztw.org/viewtopic.php?p=153303
有附一个 xul 文件为例子,抱歉请用 Firefox 测试)
范例文件中,xul:window 元素有一个 title 属性,用来改变视窗显示的标题:
https://developer.mozilla.org/en/XUL/window#a-title
我原本的目的是「动态改视窗标题」
范例档的 Btn 1, Btn 2 都是执行 setAttribute,
效果一如预期,视窗标题有改变;
不解的是把滑鼠移到第一行的 <html:p> 时,会看到 tooltip 文字跳出来。
以我的知识,不知是否为 Bug 257780 相似情况,
https://bugzilla.mozilla.org/show_bug.cgi?id=257780
title 被错误地用作 tooltip
而 html 元素在没有 title 时,应该找相关父元素的 title 来用
(离题:倒是可以设 title=" " 避免沿用),但 window 不是 html 元素啊。
於是第一个问题:
title 的值可以用 element.setAttribute('title', value) 设定。
若改用 element.setAttributeNS(namespace, 'title', value)
是否更明确指出我要设的是 xul:title?
第二个问题:
尝试按 Btn 3, 4, 5, 6 都无法改变视窗标题,我是否 namespace 参数根本写错了?
开 Firebug 发现这些 Btn 都会让 window 元素多出 title 属性、
甚至复数的 title 属性……
而执行 win.hasAttributeNS(ns.xul, 'title');(变数请见原始码)时,
只有 Btn 5, 6 为 true;
执行 win.hasAttribute('title'); 则剩下 Btn 5 结果为 true。
我的理解是 Btn 1, 2, 5 做的事情:
setAttribute 和 setAttributeNS(ns.xul, ...) 是相同的,
都成功设了 xul:title 这个属性;
然而视窗标题都没变,实在不解。
写得好乱,其实如果能解释一下 setAttributeNS 的用例
我应该会比较清楚。甚至告诉我那个档案 我到底在做什麽,也相当感谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.194.88.12