2010-10-04 76 views
2

我在写一个对现有XUL应用程序conkeror的扩展。在这方面,在 I的用户界面的一些部分正在写,我创建与 HTML元素固定宽度,<span> S IN这种情况下,以显示各种结果。“text-overflow:ellipsis;”在XUL应用程序中

在那些span的文本中,有时文本太长,以至于 适合其固定容器。我想截断太长的零件, ,并用省略号代替它。

那些span小号目前有以下CSS属性:

display: inline-block; 
width: 30%; 
overflow: hidden; 
white-space: nowrap; 

除此之外,我想使用text-overflow: ellipsis;,但事实证明 出壁虎平台没有实现那个呢。然而,对于普通样式表纯HTML页面 ,也恰好是Firefox和其他 基于Gecko的产品解决方案,这使得切断超长文本,然后将一个 省略号在其结束工作反正。

该技术的细节描述 here。它是 使用Gecko的能力来运行XUL代码来发挥它的魔力。

所以我试图用,在我的XUL应用程序也是如此。我已经改变了我 样式表,包括描述 -moz-binding: url('ellipsis.xml#ellipsis');,并且也创造了 elipsis.xml文件描述。

但是,在我的 应用程序中,这样做(或使用不同URL的类似内容,例如chrome://或 absolute file:// URL)似乎没有任何影响。实际上,根据strace的说法,它甚至不会尝试访问ellipsis.xml文件 。

显然XUL是能够做到我想要的东西,所以我假设我做得不对 ,或者干脆我错过了一些细节我要照顾第一次在 为了得到想要的结果。

我正在寻找的是拉定期text-overflow: ellipsis; 轨道XUL应用程序中,或者一种方式,一种方式来获得相同的结果 没有上述技术。

+0

你在测试什么版本的Firefox? – sdwilsh 2010-10-04 05:48:36

+0

我正在使用xulrunner 1.9.2版本进行测试。 – rafl 2010-10-04 08:49:41

回答

2

对于你需要在你的CSS文件使用chrome://网址一些(也许安全性)的原因。我用conkeror 0.9测试了它。2和xrrunner 1.9.1。

-moz-binding: url("chrome://conkeror/content/ellipsis.xml#ellipsis"); 

如果您ellipsis.xml/conkeror/install/path/modules/(在Debian的/ usr /共享/ conkeror /模块)。您可以检查chrome.manifest文件以找到您的XML文件的正确位置,可能是样式文件夹。

1

你说它没有任何效果?

随着

display:block; text-overflow:clip; overflow:hidden; white-space:nowrap; 

至少应该切断没有“......”的文字。

是参考你的XML文件正确,你的CSS和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="none"> 
    <content><children/></content> 
</binding> 
<binding id="ellipsis"> 
    <content> 
    <xul:label crop="end"><children/></xul:label> 
    </content> 
    <implementation> 
    <field name="label"> document.getAnonymousNodes(this)[ 0 ] </field> 
    <field name="style"> this.label.style </field> 
    <property name="display"> 
     <getter> 
     this.style.display 
     </getter> 
     <setter> 
     if(this.style.display != val) this.style.display= val 
     </setter> 
    </property> 
    <property name="value"> 
     <getter> 
     this.label.value 
     </getter> 
     <setter> 
     if(this.label.value != val) this.label.value= val 
     </setter> 
    </property> 
    <method name="update"> 
     <body> 
     var strings= this.textContent.split(/\s+/g) 
     if(!strings[ 0 ]) strings.shift() 
     if(!strings[ strings.length - 1 ]) strings.pop() 
     this.value= strings.join(' ') 
     this.display= strings.length ? '' : 'none' 
     </body> 
    </method> 
    <constructor> this.update() </constructor> 
    </implementation> 
    <handlers> 
    <handler event="DOMSubtreeModified"> this.update() </handler> 
    </handlers> 
</binding> 
</bindings> 
+0

添加'-moz-binding'没有任何影响,我注意到了。其他CSS属性完成他们的工作就像预期的一样。 – rafl 2010-10-04 07:51:13

+0

在该xml文件中使用其他XUL代码也不会改变这种情况。正如问题所指出的,甚至没有人试图打开该文件。 – rafl 2010-10-04 07:52:02

+0

好极了,即使使用DOM操作,这个实现也能很好地工作。 – Blago 2010-12-27 18:46:06

相关问题