// 把chrome文件的错误输出到错误控制台
javascript.options.showInConsole = true
//禁用 XUL 缓存,使得对窗口和对话框的修改不需要重新加载 XUL 文件
nglayout.debug.disable_xul_cache = true
// 可以在脚本里用dump来输出调试信息到终端,如dump("test")
browser.dom.window.dump.enabled = true
// 严格的脚本错误报告。如果不设置这个,一些脚本错误将不会被输出到错误控制台。
javascript.options.strict = true
// 使错误控制台里显示更多的和安装和更新有关的错误信息
extensions.logging.enabled = true
3.每次修改内容后用ant自动复制文件到firefox扩展目录<?xml version="1.0" encoding="utf-8"?>
<project name="ToMeFirefox" default="复制文件至扩展目录" basedir="../">
<!-- 应用的文件目录 -->
<property name="app" value="app"/>
<!-- 应用在firefox扩展目录下的文件夹名 -->
<!-- 这个扩展目录就是在第1步自定义的profile文件夹下 -->
<property name="extDirName" value="E:\workspace\FirefoxProfiles\extensions\App@since2006.com"/>
<target name="复制文件至扩展目录">
<delete dir="${extDirName}"/>
<mkdir dir="${extDirName}"/>
<copy todir="${extDirName}">
<fileset dir="${app}">
</fileset>
</copy>
</target>
</project>
4.重启firefox测试效果
5.反复重启的话,可以创建个快捷方式在第1步的参数-p后加上Profile的名字每次打开默认使用这个Profile
如:
firefox.exe -p dev -console
原来在firefox2以下版本中写XMLHttpRequest读取时,同步和异步请求都是onreadystatechange来设置回调函数,可是到firefox3中,同步请求通过设置onreadystatechange来判断数据是否读取貌似完成没有作用,换回下面方法就没问题了。
在 firefox2 以下版本中,xmlhttp同步/异步读取数据,可以使用下面方法来监测数据是否读取完毕:
transport.onreadystatechange = function () {
if (transport.readyState == 4) {
if (transport.status == 200) {
// do sth
} else {
// do sth
}
}
}
在 firefox3 中测试时,xmlhttp同步读取数据,设置onreadystatechange不会产生回调。
需要在send方法后这样读取:
transport.send(null);
if (transport.status == 200) {
// do sth
} else {
// do sth
}
IE6的使命终于快结束了,MS再过几天(2月12日)起将强制推送IE7浏览器。如果不想更新到IE7,可以使用MS官方提供的IE7BlockerToolkit
安装后,打开CMD进入安装目录,敲入IE70Blocker.cmd /B即可屏蔽自动更新IE7,换成/U参数则允许自动更新IE7。
对于IE6的结束,我更希望Firefox3的到来。Firefox3中终于支持模态对话框了,在2中虽然支持模态对话框,但需要特殊设置一些权限。
在mozilla developer center上,已经可以看到FF3中支持window.showModalDialog(),window.dialogArguments。
最要命的是在FF2中模拟模态对话框会产生某些RP问题,比如FCKEditor(2.5.1)工具栏的帮助按钮在FF中模拟了模态对话框,但在我机器上运行时,多点几次父窗口,再关闭子窗口,CPU占用率就90%以上。
自己写个window.open,以dialog方式弹出再关闭,CPU占用率也有90%以上。简单页面没有测试,但就算弹出的页面复杂一点,CPU也不要一直飙到90%以上。
Firefox3快来吧!
之前的留言回复使用tiny_mec做所见即所得编辑器,速度感觉太慢了,于是自己想写个简单的UBB编辑器玩玩,碰到一些问题记这里:
IE和Firefox下取消事件冒泡
function showEmot() { var evt = || event; if(evt.preventDefault) { // Firefox evt.preventDefault(); evt.stopPropagation(); } else { // IE evt.cancelBubble=true; evt.returnValue = false; } }
textarea下将一段内容替换鼠标所选文字或插入到当前光标位置
function append($val) { // sEditorId textarea的ID var eObj = document.getElementById(sEditorId); // ie if (eObj.createTextRange) { eObj.focus(); document.selection.createRange().duplicate().text = $val; } else { // firefox var iStart = eObj.selectionStart; var iEnd = eObj.selectionEnd; eObj.value = eObj.value.substr(0, iStart) + $val + eObj.value.substr(iEnd, eObj.value.length); eObj.focus(); } }
字符串形式的xml数据(和html合在一起),在IE和FF下都可以用一般的dom标签定位到过去取值。
但在FF中有一个BUG,假如值有时,取出来的值会是:[CDATA[数据]]。
<XMP id=target> <root><node><![CDATA[数据]]></node></root> </XMP>
function getXmlFromString($str) {
// 简单用这种方法判断一下是否是IE
if (document.all) {
var xmlDom = new ActiveXObject("Microsoft.XMLDOM");
xmlDom.loadXML($str);
return xmlDom;
} else {
return new DOMParser().parseFromString($str, "text/xml");
}
} // 此时就可以用像处理xml一样的方法取值了 var doc = getXmlFromString(document.getElementById("target").innerHTML); alert(doc.childNodes[0].childNodes[0].childNodes[0].nodeValue);