前端开发

Jquery-Json-IE缓存问题

今天用到ajax加载,想试试jquery的json,据说很好用,按照jquery的api文档说明设置,可以在ie下服务器端总是被缓存,仔细看了下文档,使用ajax加载时可以设置是否缓存服务器端,但是使用json方法就没有这个设置。

突然想到ecshop的严重码加载方法,就套来用了

$.getJSON(”foo.php?temp=”+Math.random(), function(json){

alert(json);

});

在url后面加上一个随机参数,浏览器就会当作不同的url处理,这样就简单的解决了Jquery使用Json方法时的缓存问题。

ps:又是一个星期没有更新了,在博客上花的时间也比较少,这周我经理请了一天的假,剩我一个人独挡一面,让我这几天也体会很多,发现原来自己和经理相差还很远…………..

还有就是我有3个meme邀请,先到先得了

IE-Cookie跨域问题

我需要通过网站的后台嵌入iframe访问另一个网站的后台,但是两个网站的后台肯定都需要Session验证权限,Session又是基于Cookie实现的,在IE浏览器下是这样是不允许访问第三方Cookie的。

IE处于安全性和隐私考虑,默认情况下是禁止访问第三方Cookie的,我们可以通过ie浏览器的Internet 选项来设置是否允许访问第三方Cookie,但是这样只对自己有效,在别人的浏览器上就不一定行的通了。

现在介绍一种一劳永逸的方法,支持IE8。

在你创建Cookie或Session的PHP文件最上面加上

header(’P3P: CP=CAO PSA OUR’);
header(’XDomainRequestAllowed: 1′);

这是在向客户端浏览器发送两条头信息

P3P:Platform for Privacy Preferences

这样我们就可以替用户设置本页面Cookie的隐私权限了,其实和用户自己设置IE的隐私权限是一样的。

XDomainRequestAllowed:IE8新支持的特性,XDomainRequestAllowed设置为1可以实现跨域请求,这样开发Ajax就不必为跨域而烦恼了。

但是这样又为安全问题带来的隐患,使跨站攻击变的更加容易,虽然可以通过一些手段限制可以跨站的域,但是不是万不得已或者这个页面不会带来负面影响最好不要这样做。

博客换新主题

经过好几个小时的努力,我把WordPress主题 deniart 换成了Micolog下可以使用的主题

这是效果图

Devart Micolog themes

评论Ajax提交,不过Chrome下有问题,这个和xuming主题是一样的,有时间了再修正。

如果你也想修改主题的话,主题文件最好使用不带bom的utf8格式的,带bom的话页面有可能会变形。

喜欢的朋友可以发回复索要,我看到会尽快发邮件给你。

原始主题没有通过W3C验证,我修改了一下,现在可以通过W3C验证,如果你测试我的博客,会发现一条没有通过验证,那是因为Akon这篇文章里面使用了flash播放器,为了兼容ie,所出现了一条错误。

8月2日更新,主题做了些优化,现在提供下载

猛击此处下载

广告消逝效果

做了一个广告的消逝效果,就慢慢的消逝,没有加透明度的渐变。

代码如下

<!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” xml:lang=”zh” lang=”zh” dir=”ltr”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
<style type=”text/css”>
html,body,div{
margin: 0;
padding: 0;
width: 100%;
}
</style>
<script type=”text/javascript”>
var Speed = 5; //设置速度
var ad = null;
var timer = null;
hidden = function(){
ad = document.getElementById(’ad’);
setTimeout(”timer =  setInterval(’slowhidden();’, 1);”, 3000);
}
slowhidden = function(){
ad.style.height = ad.clientHeight – Speed + ‘px’;
if(ad.clientHeight <= Speed){
clearInterval(timer);
ad.style.display=”none”;
}
}
</script>
</head>
<body onload=”hidden();”>
<div id=”ad” style=”height: 400px; background:#D23; overflow:hidden”></div>
<div style=”height: 1000px;background:#FF0;”></div>
</body>
</html>

不同浏览器对html、body的height和width的不同解析

这篇文章本来在我的blogger上的,可是blogger一直被墙,就转载到这吧。

1. html-body标签嵌套一起。

html {
background: #DDABC0;
}
body{
background: #3311BB;
height: 100%;
width: 100%;
}
在ie 6下body的height和width为你能看到的浏览器的高度和宽度,在其他浏览器下没有显示,只显示html的背景,好像是不能控制html标签的宽度和高度,囧。。。。。
错,html是可以定义高度和宽度的,但是你如果设置html的background的话,它会设置整个浏览器背景色。

2. html-body-div三对标签嵌套一起。

html {
background: #DDABC0;
}
body{
background: #3311BB;
}
div{
background: #99CC55;
height: 100%;
width: 100%;
}
在ie6和ie7下效果如下
ie6 ie7
ie8、firefox和chrome下
只显示html标签的背景。
说明ie6和ie7下此时body的style为
margin: 15px 5px ? 5px;
height: 20px;
?的地方就先不探究了
3.只有html、body标签
html {
background: #DDABC0;
}
body{
background: #3311BB;
height: 100%;
width: 100%;
}
这是ie6、ie7、ie8皆不相同。
ie6下body背景色为浏览器的可视width和height。并且margin: 15px 10px;
ie7下body背景色width为何ie6相同,height为20px,margin 也相同。
ie8下body不显示。
firefox与chrome与ie8相同。
此处证明上面的?处也为15px。
4.html、body和div标签嵌套。
style与3相同,知识在body里边加了一个空的div,别的什么也没加,不同的效果又出来了。
下边还是body的效果
ie6下效果不变,
ie7下变了,哈哈,也什么都看不见了,和上边ie8相同。
ie8下不变,与此事的ie7相同。其他浏览器就不说了。
ie8、firefox、chrome等比较符合w3c标准的定义body的height和width的默认为0。
这个说明了,ie6此时没有被这个div影响,但是ie7却被影响了。
ie6 body的width和height的100%效果为浏览器的可视区域,ie7的body根据里边的内容变动。
这个主要是ie6和ie7对body的style不同定义造成的,具体是那个,我还不清楚。
5.继续上面的,添加div的style。
div{
background: #99CC55;
height: 100%;
width: 100%;
}
此时效果:
ie6效果如我所想,body和div的显示区域没有变,还是浏览器的可视区域,div的背景把body的覆盖掉了。
ie7就让我不解了,此时body有出现了,显示区域和3相同,并且div的背景色也把body覆盖了。
ie8、firefox和chrome如我所想,body和div还是为零,不显示。
总结,在定义body的width和height为100%时的效果:
1.如果定义html的背景色,不论如何整个页面的底部背景色为所定义的背景色。
2.body默认的width在ie6、ie7下默认为父级的100%,其他为0(零)。
3.body默认的height在ie6下默认为父级的100%,ie7下为20px和受里边内容影响。
4.w3c标准的浏览器body的height和width为0(零)。
其他,在body的width和height没有定义的情况下:
ie6、ie7默认的width为100%,height为20px,ie8的width和height为0(零)。
我一直都是搞程序那一块的,最近被迫也弄前台html了,几天的体会就是最恨ie6了,ie8更接近w3c了。这是我此时看到的表面体会,如果谁看到了,那个地方不对,麻烦告诉我一声。