X-0026 checked&disabled&hidden属性の注意事項

XULの要素について、disabled属性がfalseの値を持っているのにも関わらず、disabledがtrueであると解釈されてしまうといったことがあります。これは、単にdisabled属性が指定されているかどうかしかチェックしない(そして、指定されていれば全て「true」であると見なすという)手抜き実装の部分がいくつかあるせいです。値がブール値を取るchecked, disabled, hiddenなどの属性を操作するときは、setAttribute('disabled', false)ではなくremoveAttribute('disabled')と書いておきましょう。これで無用なトラブルを避けることができます。

この問題に起因する現象としては、設定パネルのチェックボックスをクリックしてもチェック状態が変わらない、などの症状が挙げられます。