shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
15楼#
发布于:2009-08-21 18:05
虽然今天是情人节,但是搞不定这个问题就不出去!!!

彩虹总是在风雨过后才见到的,痛苦当中。。。。。救命呀。。。。。。。
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
16楼#
发布于:2009-08-21 18:05
现在还没搞定,以前用C++开发程序,很多参考书,可现在开发扩展根本就没什么参考书,。。。。。。。。。。。。。。
哪位高手出来指点一下呀,哇哈哈,又是一个通宵。。。。。。。。。。。
Cye3s
千年狐狸
千年狐狸
  • UID155
  • 注册日期2004-11-25
  • 最后登录2024-04-28
  • 发帖数1322
  • 经验95枚
  • 威望0点
  • 贡献值34点
  • 好评度14点
  • 社区居民
  • 忠实会员
17楼#
发布于:2009-08-21 18:05
你要再看点做网页的东西
http://www.w3school.com.cn/index.html

JS改颜色啊,也是设置属性
document.getElementById("ID").setAttribute("style", "CSS");
我很懒...
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
18楼#
发布于:2009-08-21 18:05
http://www.w3school.com.cn/

这个网站很不错,以前经常去。。。
GOLF-AT
千年狐狸
千年狐狸
  • UID11611
  • 注册日期2006-02-20
  • 最后登录2019-12-30
  • 发帖数3239
  • 经验265枚
  • 威望1点
  • 贡献值260点
  • 好评度59点
  • 社区居民
  • 忠实会员
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;
}
GOLF-AT
千年狐狸
千年狐狸
  • UID11611
  • 注册日期2006-02-20
  • 最后登录2019-12-30
  • 发帖数3239
  • 经验265枚
  • 威望1点
  • 贡献值260点
  • 好评度59点
  • 社区居民
  • 忠实会员
20楼#
发布于:2009-08-21 18:05
做 firefox 的开发,还有一个 Mozilla 的官方网站可以去看看(xul参考):https://developer.mozilla.org/en/XUL。firefox 元件的使用说明,这个网站比 w3school.com 讲的更加具体。
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
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的值来显示。。。


各位前辈再赐教一下,不胜感激~~
195
195
千年狐狸
千年狐狸
  • UID3920
  • 注册日期2005-03-12
  • 最后登录2023-01-15
  • 发帖数1123
  • 经验50枚
  • 威望0点
  • 贡献值0点
  • 好评度2点
  • 社区居民
  • 忠实会员
22楼#
发布于:2009-08-21 18:05
开始搞插件开发讨论了?
GOLF-AT
千年狐狸
千年狐狸
  • UID11611
  • 注册日期2006-02-20
  • 最后登录2019-12-30
  • 发帖数3239
  • 经验265枚
  • 威望1点
  • 贡献值260点
  • 好评度59点
  • 社区居民
  • 忠实会员
23楼#
发布于:2009-08-21 18:05
MyPanel.style.color = Color;
改成
MyPanel.setAttribute("mode", Color);
就可以了。
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
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")也不行,好生奇怪,不知道哪里错了。。。。
GOLF-AT
千年狐狸
千年狐狸
  • UID11611
  • 注册日期2006-02-20
  • 最后登录2019-12-30
  • 发帖数3239
  • 经验265枚
  • 威望1点
  • 贡献值260点
  • 好评度59点
  • 社区居民
  • 忠实会员
25楼#
发布于:2009-08-21 18:05
扩展的 chrome.manifest 文件中,没有添加 style 吧,扩展没有套用 overlay.css
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
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

大侠,我是不是添加得不对???
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
27楼#
发布于:2009-08-21 18:05
在setting.xul弹出的对话框中,单选black,red,blue,green任一个后点击确定,也就是调用setting.js的onSave(),然后onSave()函数要怎样实现,才能改变overlay.xul中状态栏中my-panel的字体按照CSS文件中#my-panel的属性mode的值来显示。。。


各位前辈再赐教一下,不胜感激~~

附件如下:
附件名称/大小 下载次数 最后更新
helloworld.xpi (10KB)  67 2009-09-04 16:24
GOLF-AT
千年狐狸
千年狐狸
  • UID11611
  • 注册日期2006-02-20
  • 最后登录2019-12-30
  • 发帖数3239
  • 经验265枚
  • 威望1点
  • 贡献值260点
  • 好评度59点
  • 社区居民
  • 忠实会员
28楼#
发布于:2009-08-21 18:05
下载了你的文件,在 #my-panel 和 [mode="blue"] 之间多了一个空格,其它的也是一样。
GOLF-AT
千年狐狸
千年狐狸
  • UID11611
  • 注册日期2006-02-20
  • 最后登录2019-12-30
  • 发帖数3239
  • 经验265枚
  • 威望1点
  • 贡献值260点
  • 好评度59点
  • 社区居民
  • 忠实会员
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); 一条语句就行了。
游客

返回顶部