在修改这个日志编辑器时碰到的问题,IE中innerHTML插入html代码如果混杂有css样式表,当css样式插入在元素最前面时,IE会忽略这个样式。
演示(下面代码在IE中字体将是黑色,而firefox中会正确的显示为红色):
<HTML>
<DIV id=test></DIV>
<SCRIPT>
document.getElementById("test").innerHTML += "<style>b{color:red}</style><b>hello!World!!!</b>";
</SCRIPT>
<HTML>
其它参考:PJHome的使用innerHTML插入样式。不过感觉这篇文章中说的不是很正确。
文中提到“IE对这里的顺序要严格要求。必须先插入html内容然后再插入<style>样式才生效。这样test这个div 里就会出现一个红色的 hello!World! 但是如果把<style>放到<b>前头,就被IE无视了。”
感觉上说的是CSS样式表需要放在使用这个样式表的元素前面。而实际上,插入内容时,只要有任意一个其它html元素就行了,比如br,pre,div等。:)
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快来吧!
前些天参照extjs做了一个类似的下拉列表组件,做完后发现在IE6下切换背景图片时有明显的延迟,而extjs没有类似情况。
原因是因为IE6中默认没有缓存背景图片,虽然切换时是使用同一样图片,不同位置。但是每次都会发起一次HTTP请求(虽然会返回HTTP状态304)
可以使用如下方法解决:
// 先判断一下是否是ie6
if (isIE6) {
try {
document.execCommand("BackgroundImageCache", false, true);
} catch (e) {
}
}
微软的ICEnroll接口中提供了createPKCS10,acceptPKCS7方法来创建证书,安装证书功能。在ICEnroll3接口中提供了InstallPKCS7,可以使用它来安装根证书。
只自动导入根证书。
<%
StringTokenizer st = null;
String line = null;
// ------------------------------------------------------------- 返回CA证书内容 >>>
String server_cert = "开始用openssl生成的根证书内容";
if (StringUtils.isBlank(server_cert)) {
throw new BusinessException("读取CA证书失败");
}
// 这里的这些操作,是为了生成vbscript中证书内容的变量定义
String pkcs7ca = "sPKCS7ca=\"\" & vbcrlf\r\n";
st = new StringTokenizer(server_cert, "\r\n");
while (st.hasMoreTokens()) {
line = st.nextToken();
if (line.equals("\r\n"))
continue;
pkcs7ca += "sPKCS7ca=sPKCS7ca & \"" + line + "\" & vbcrlf\r\n";
}
%>
<OBJECT id=XEnroll codeBase=xenroll.dll classid=clsid:127698e4-e730-4e5c-a2b1-21490a70c8a1></OBJECT>
<SCRIPT type=text/vbscript>
ON ERROR resume next
<%=pkcs7ca%>
XEnroll.InstallPKCS7 sPKCS7ca
If err.number = 438 then
msgbox err.description & err.number
Elseif err.number <> 0 then
msgbox err.description & err.number
Else
msgbox "根证书安装成功"
End If
</SCRIPT>
之前的留言回复使用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(); } }
IE下有onselectstart这个方法,通过设置这个方法可以禁止元素文本被选取。而firefox下没有这个方法,但可以通过css或一种变通的办法解决:
if (typeof(element.onselectstart) != "undefined") {
// IE下禁止元素被选取
element.onselectstart = new Function("return false");
} else {
// firefox下禁止元素被选取的变通办法
element.onmousedown = new Function("return false");
element.onmouseup = new Function("return true");
}
或使用CSS:
div {
-moz-user-select: none;
}