Sunshow Life

Beyond


  • 首页

  • 归档

  • 标签

IE6又一选择器bug?

发表于 2008-04-16 | 分类于 WebDev

总结一下就是类似#gisarrow.over、#gisarrow.expanded这样的选择符
在使用javascript动态更改className的时候只有最先定义的一个样式有效

在IE6运行以下例子,然后删掉#gisarrow.over做个对比
IE7下还没试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
#gisarrow {
width: 10px;
height:630px;
float: left;
background: #F3F3F3 url(http://124.42.44.70/ska/images/arrow-right.gif) no-repeat center;
}
#gisarrow.over {
background-color: #C3D9FF;
cursor: pointer;
}
#gisarrow.expanded {
background-image: url(http://124.42.44.70/ska/images/arrow-left.gif);
}
</style>
<script type="text/javascript">
function expand() {
var arrow = document.getElementById('gisarrow');
arrow.className = 'expanded';
}
function collapse() {
var arrow = document.getElementById('gisarrow');
arrow.className = '';
}
function arrowClick() {
var arrow = document.getElementById('gisarrow');
if (arrow.className == 'expanded') {
collapse();
} else {
expand();
}
}
</script>
</head>
<body>
<div id="gisarrow" onclick="arrowClick()"></div>
</body>
</html>

操作iframe中的DOM元素

发表于 2007-12-21 | 分类于 WebDev

操作iframe中的DOM元素,有两个注意点:
1、必须先获取指定iframe的document;
2、对于1,必须在页面load完以后才能获取;

举例说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>操作iframe中的DOM元素</title>
<script type="text/javascript">
<!--
//返回指定iframe的document
function getIFrameDocument(aID) {
var rv = null;
if (document.getElementById(aID).contentWindow.document){
// if contentDocument exists, W3C compliant (Mozilla)
rv = document.getElementById(aID).contentWindow.document;
} else {
// IE
rv = document.frames[aID].document;
}
return rv;
}
function bindEvents() {
var iDocument = getIFrameDocument('test');
//接下来就可以进行类似的DOM操作了
var map = iDocument.getElementById('map');
//……
}
//-->
</script>
</head>
<body onload="bindEvents()">
<iframe id="test" name="giscontent" src="iframe.html" frameborder="0" scrolling="no">
</iframe>
</body>
</html>

IE6下CSS背景图片的Bug

发表于 2007-11-27 | 分类于 WebDev

最近碰到的问题,比如有一div,设置了背景图,然后只要在js中对此div的css做出任何更改就会重新请求背景图片,表现为页面闪烁
此问题仅在IE6下出现(更低版本未测试),原因是IE6在默认情况下不缓存背景图片

解决办法一,通过css:

1
2
3
html {
filter: expression(document.execCommand("BackgroundImageCache", false, true));
}

缺点:可能会使整个页面的加载速度变慢

解决办法二,使用javascript:

1
2
3
<script type="text/javascript">
document.execCommand('BackgroundImageCache', false, true);
</script>

缺点:如果在firefox等浏览器下执行会出错。
所以需要判断是否为IE浏览器,使用jQuery提供的判断方法如下:

1
2
3
4
5
<script type="text/javascript">
if ($.browser.msie) {
document.execCommand('BackgroundImageCache', false, true);
}
</script>

了解UUID

发表于 2007-04-09 | 分类于 Java

UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API。UUID按照开放软件基金会 (OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID (Globals Unique Identifiers)。

UUID 在所有计算机上都是唯一的。不过,它们的值是完全随机的,因此不能用来确定添加值的时间或值的顺序。另外,UUID 值比其它方法(包括全局自动增量)所需的值大得多,并且在主键表和外键表中都需要更多的表空间。使用 UUID 建立表索引的效率也更低。

标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12)

JDK中的UUID实现

从JDK 5.0开始自带了UUID的实现 java.util.UUID,示例用法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.UUID;
public class TestUUID {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 0; i < 10; i ++) {
System.out.println(UUID.randomUUID().toString());
}
}
}

输出如下结果:

1
2
3
4
5
6
7
8
9
10
2bc58ecd-dd48-4144-b5aa-2ebebaad300c
468a36ed-2eec-42fc-9524-d04a404a5d94
e43ea34d-3768-4ad0-8f28-dd8e61267103
dba317d5-688e-4656-bea5-4542b414481d
f40408bb-df92-4118-8265-1e83f2810ae2
386e7c9d-b2af-4787-a171-6b1d9f350193
77a2eb19-0541-4fc3-a014-1b70840c42ec
4a00304e-d7e7-4a6f-bef3-4fb40ed7e1c2
631fdb01-1505-44e9-9e1b-3d84083651da
bdb68883-ff9b-4b56-a825-940f45b3b3db

Hibernate中的使用

UUID algorithm
The UUID contains: IP address, startup time of the JVM (accurate to a quarter second), system time and a
counter value (unique within the JVM). It’s not possible to obtain a MAC address or memory address from Java
code, so this is the best we can do without using JNI.

从hibernate reference中抄了个例子如下:

1
2
3
4
5
6
7
8
9
10
11
<class name="eg.Person" table="person">
<id name="Key" column="pid" type="string">
<generator class="uuid" />
</id>
<property name="birthday" type="date" />
<component name="Name" class="eg.Name"><!-- class attribute optional -->
<property name="initial" />
<property name="first" />
<property name="last" />
</component>
</class>

Java获取随机字符串

发表于 2007-03-30 | 分类于 Java
1
2
3
4
5
6
7
8
9
10
11
12
import java.util.Random;
public static String getRandomString(int length) {
StringBuffer buffer = new StringBuffer("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
StringBuffer sb = new StringBuffer();
Random r = new Random();
int range = buffer.length();
for (int i = 0; i < length; i ++) {
sb.append(buffer.charAt(r.nextInt(range)));
}
return sb.toString();
}

这个没啥意思,就是随机数用的不多,每次要用都记不住,在这里备个份@@

FTPClient中retrieveFileStream的用法

发表于 2007-03-27 | 分类于 Java

工作需要使用了org.apache.commons.net.ftp.FTPClient来操作FTP,记录一下心得。

这个类封装的很完善,使用起来也很简单,只是在使用retrieveFileStream的时候碰到了一点小问题,就是不知道怎么完成传输状态,尝试发送abor指令也不行。在咨询了bianbian和查看了源代码之后看到这一段说明以后解决问题:

  • You must close the InputStream when you
    • finish reading from it. The InputStream itself will take care of
    • closing the parent data connection socket upon being closed. To
    • finalize the file transfer you must call
    • {@link #completePendingCommand completePendingCommand } and
    • check its return value to verify success.

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import org.apache.commons.net.ftp.FTPClient;
public class TestFTP {
public static void main(String[] args) {
try {
FTPClient ftp = new FTPClient();
// initialize ftp connection
/*
*
*/
String remotefile = "test.xml";
InputStream is = null;
is = ftp.retrieveFileStream(remotefile);
if (is != null) {
is.close();
}
if (!ftp.completePendingCommand()) {
ftp.logout();
ftp.disconnect();
}
// continue
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

WinMount v1.2

发表于 2007-03-16 | 分类于 Software

很早就知道这个东西了,一直没用,刚才装上mount了个100多M的rar,速度还是挺不错的

更新内容:

  • 支持 Vista
  • 使用了新的方法,Mount 一个包含成千上万的多文件的ZIP或RAR时,速度飞快,只

要几秒钟

  • 可以右键一个文件夹,把它 Mount 为一个新盘或盘中的一个文件夹。这相当于

Linux 系统中常用的影射功能。特别是,对新文件夹中的写操作都是临时的,不会影

响原始文件。

http://cn.winmount.com/down/WinMount_cn.zip

打印 HTML 网页强制换页的方式

发表于 2006-10-26 | 分类于 WebDev

转载自:http://www.neo.com.tw/archives/000798.html

打印 HTML 无法强制换页其实是一件很令人困扰的事,要达到这个功能其实可以透过 CSS 的 Pagebreak 来处理。
强制分页有大概只有二种用的到:

1
2
{ page-break-after: always; /*在标签后换页*/ }
{ page-break-before: always; /*在标签前换页*/ }

这二个当中,大概最常用的就是 page-break-after: always,就是在指定的标签后强制换页,可以参考下面的 HTML 范例:

1
2
<div style="page-break-after: always;"> 第一页 </div>
第二页

再来就可以试着打印看看效果如何。
其它 CSS 打印相关属性可以参考:
http://www.w3schools.com/css/css_ref_print.asp

Linux自动校时

发表于 2006-09-11 | 分类于 Linux

服务器系统时间总是比较快,于是google到以下解决方案

  1. 直接连接到校时服务器

    1
    2
    #Server 必须是 Linux,而且要打开 ntpd , time 两个 service
    ntpdate stdtime.sinica.edu.tw
  2. 更新 BIOS 时间

    1
    clock -w
  3. 加入计划任务

    1
    2
    3
    crontab -e
    #输入以下代码保存
    0 0 * * * (/usr/sbin/ntpdate stdtime.sinica.edu.tw ; /sbin/clock -w)

关闭jfreechart的文字抗锯齿

发表于 2006-08-04 | 分类于 Java
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.awt.RenderingHints;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
final JFreeChart chart;
/*
chart = ....
*/
//chart.setAntiAlias(false); //关闭全部反锯齿
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); //关闭文字的抗锯齿
1…45
Sunshow

Sunshow

Beyond the Life

50 日志
12 分类
122 标签
RSS
© 2017 Sunshow
由 Hexo 强力驱动
主题 - NexT.Pisces