15楼#
发布于:2009-08-21 18:05
虽然今天是情人节,但是搞不定这个问题就不出去!!!
彩虹总是在风雨过后才见到的,痛苦当中。。。。。救命呀。。。。。。。 |
|
16楼#
发布于:2009-08-21 18:05
现在还没搞定,以前用C++开发程序,很多参考书,可现在开发扩展根本就没什么参考书,。。。。。。。。。。。。。。
哪位高手出来指点一下呀,哇哈哈,又是一个通宵。。。。。。。。。。。 |
|
17楼#
发布于:2009-08-21 18:05
你要再看点做网页的东西
http://www.w3school.com.cn/index.html JS改颜色啊,也是设置属性 document.getElementById("ID").setAttribute("style", "CSS"); |
|
|
18楼#
发布于:2009-08-21 18:05
|
|
19楼#
发布于:2009-08-21 18:05
给 radiogroup 加一个 id,比如 id 为 color-group,那么 OnSave 的代码
Color = document.getElementById("color-group"). selectedItem.id; cName = "@mozilla.org/appshell/window-mediator;1"; fWins = Components.classes[cName].getService(Components. interfaces.nsIWindowMediator).getEnumerator('navigator:browser'); while(fWins.hasMoreElements()) { Document = fWins.getNext().document; MyPanel = Document.getElementById("my-panel"); if (MyPanel) MyPanel.style.color = Color; } |
|
20楼#
发布于:2009-08-21 18:05
做 firefox 的开发,还有一个 Mozilla 的官方网站可以去看看(xul参考):https://developer.mozilla.org/en/XUL。firefox 元件的使用说明,这个网站比 w3school.com 讲的更加具体。
|
|
21楼#
发布于:2009-08-21 18:05
关于statusbarpanel字体颜色的问题(续集)
感谢各位火狐前辈之前的指导。 我实践了一下,用document.getElementById("ID").setAttribute("style", "color:green"); 或者MyPanel.style.color = Color; 这两种方式都可以成功更改状态栏上的字体颜色。 但我想将字体属性如字体颜色,字体大小,字体字形这些都交给CSS文件设置,而不在JS文件里面进行设置,只在JS文件里面根据CSS的设置来调用调整就行,可以体现出体系结构:XUL专干主窗口;CSS专干属性设置;JS专干事件处理。而且方便以后修改:主窗口找XUL文件,属性设置找CSS文件,事件处理找JS文件。 文件一:overlay.xul <?xml version="1.0"?> <overlay id="sample" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <statusbar id="status-bar"> <statusbarpanel id="my-panel" label="Hello, World"/> </statusbar> <script src="overlay.js"/> </overlay> 文件二:overlay.js 文件三:setting.xul <?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?> <dialog id="myDialog" title="My Dialog" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="onInitialDialog();" buttons="accept,cancel" buttonlabelaccept="Set Favorite" buttonaccesskeyaccept="S" ondialogaccept="return onSave();" buttonlabelcancel="Cancel" buttonaccesskeycancel="n" ondialogcancel="return onCancel();"> <script src="setting.js"/> <script type="application/x-javascript" src="common.js" /> <dialogheader title="my dialog" description="example dialog"/> <groupbox flex="1"> <caption label="select favorite color"/> <radiogroup> <radio id="black" label="black"/> <radio id="red" selected="true" label="red"/> <radio id="blue" label="blue"/> <radio id="green" label="green"/> </radiogroup> </groupbox> </dialog> 文件四:setting.js 文件五:common.js 文件六:overlay.css #my-panel[mode="black"] { color: black !important; font-weight:bold !important; } #my-panel[mode="red"] { color: red !important; font-family:Arial, "宋体", Tahoma, "Times NEW Roman" !important; } #my-panel[mode="blue"] { color: blue !important; } #my-panel[mode="green"] { color: green !important; font-size:15 !important; } 问题是:在setting.xul弹出的对话框中,单选black,red,blue,green任一个后点击确定,也就是调用setting.js的onSave(),然后onSave()函数要怎样实现,才能改变overlay.xul中状态栏中my-panel的字体按照CSS文件中#my-panel的属性mode的值来显示。。。 各位前辈再赐教一下,不胜感激~~ |
|
22楼#
发布于:2009-08-21 18:05
开始搞插件开发讨论了?
|
|
23楼#
发布于:2009-08-21 18:05
MyPanel.style.color = Color;
改成 MyPanel.setAttribute("mode", Color); 就可以了。 |
|
24楼#
发布于:2009-08-21 18:05
MyPanel.style.color = Color;改成MyPanel.setAttribute("mode", Color);还是不行
之前用window.opener.document.getElementById('my-panel').setAttribute("style", "color:green");可以改变颜色,但这是一种不好的编码方式。 但是现在用window.opener.document.getElementById('my-panel').setAttribute("mode", "green")也不行,好生奇怪,不知道哪里错了。。。。 |
|
25楼#
发布于:2009-08-21 18:05
扩展的 chrome.manifest 文件中,没有添加 style 吧,扩展没有套用 overlay.css
|
|
26楼#
发布于:2009-08-21 18:05
这是我的chrome.manifest文件(在最后一行有添加哟——!)
content helloworld chrome/helloworld/content/ locale helloworld en-US chrome/helloworld/locale/en-US/ locale helloworld zh-CN chrome/helloworld/locale/zh-CN/ skin helloworld classic/1.0 chrome/helloworld/skin/ overlay chrome://browser/content/browser.xul chrome://helloworld/content/overlay.xul style chrome://global/content/customizeToolbar.xul chrome://helloworld/skin/overlay.css 大侠,我是不是添加得不对??? |
|
27楼#
发布于:2009-08-21 18:05
在setting.xul弹出的对话框中,单选black,red,blue,green任一个后点击确定,也就是调用setting.js的onSave(),然后onSave()函数要怎样实现,才能改变overlay.xul中状态栏中my-panel的字体按照CSS文件中#my-panel的属性mode的值来显示。。。
各位前辈再赐教一下,不胜感激~~ 附件如下: |
|
|
28楼#
发布于:2009-08-21 18:05
下载了你的文件,在 #my-panel 和 [mode="blue"] 之间多了一个空格,其它的也是一样。
|
|
29楼#
发布于:2009-08-21 18:05
另外,之前就已经和你说了,在 setting.xul 中,给 <radiogroup> 加一个 id,比如:
<radiogroup id='color'> 那么 document.getElementById("color").selectedItem.id 就是用户选择的颜色。你现在有5个颜色,你的OnSave中就用了5个判断,如果有100个颜色,难道要写100个判断语句?对话框初始化也一样,假设上次选择的颜色保存在变量Color中,那么用 document.getElementById("color").selectedItem = document.getElementById(Color); 一条语句就行了。 |
|