【发布时间】:2014-06-25 08:25:21
【问题描述】:
我在一个无需重启的插件中应用这样的绑定:
var css = '.findbar-container { -moz-binding:url("' + self.path.chrome + 'findbar.xml#matchword") }';
var cssEnc = encodeURIComponent(css);
var newURIParam = {
aURL: 'data:text/css,' + cssEnc,
aOriginCharset: null,
aBaseURI: null
}
cssUri = Services.io.newURI(newURIParam.aURL, newURIParam.aOriginCharset, newURIParam.aBaseURI);
myServices.sss.loadAndRegisterSheet(cssUri, myServices.sss.USER_SHEET);
findbar.xml 内容为:
<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="matchword">
<content>
<children/>
<xul:toolbarbutton anonid="matchwordbtn" accesskey="w" class="tabbable" label="Whole Word Only" tooltiptext="Match only whole words" oncommand="console.log('hi')" type="checkbox"/>
</content>
</binding>
</bindings>
这只是在FindBar 中添加了一个按钮,标记为“仅全字”。但现在要删除它,我只是用myServices.sss.unregisterSheet(cssUri, myServices.sss.USER_SHEET); 取消注册样式表,但这并不是取消绑定它。
answer on ask.mozilla.org 告诉我这是预期行为,但没有提供解决方案。
我在想也许我应该动态添加绑定而不是通过 CSS,我没有对此进行测试,但它不符合 XBL 更新的 3 个原因:
- 绑定元素匹配指定不同绑定的样式规则
- 元素已从绑定文档中移除
- 元素被销毁(例如,通过关闭文档)
答案告诉我这是意料之中但时髦的行为。
【问题讨论】:
标签: javascript firefox firefox-addon xul xbl