IE6 加载动态js不执行的问题

2011年8月25日 没有评论

用户的信息存放在主站上,一个子站也提供用户登录的接口,登陆采用ajax不刷新页面的方式,由于安全原因,ajax不允许跨域执行,所以单纯的ajax是不能直接运行的。但是动态创建script的方式不存在跨域的问题,大致的操作是通过document.createElement创建一个script对象,同时script的src指向主站提供验证用户信息的url,url中参数包括用户输入的用户名和密码,把这个script对象添加到当前页面上。主站的接口根据用户名密码来验证用户是否合法,响应的内容是调用一个js方法。

该方式在IE6下有时不能正常工作,其他主流浏览器都没有问题。IE6的具体症状是第一次能正常工作,如果用户输入用户名和密码不匹配,第一次能提示用户重新输入,但是修改后重新提交了就没有反应,必须要强制刷新才会正常,通过httpwatcher查看,请求是发送,也有响应,就是没有调用成功页面上的js方法。经常反复折腾,终于找到问题的根源,主站接口url是php,所以响应的header中content-type不是text/html,强制设置header中content-type设置为 Content-Type: text/javascript 或者Content-Type: application/x-javascript后,IE6就正常工作了。另外如果服务器启用gzip压缩,可能也会造成IE6不能正常工作,在apache中可以针对某个特定的uri设置成不压缩,如:SetEnvIfNoCase Request_URI /user/vlogin/.* no-gzip dont-vary。

flash与javascript的相互通信的例子

2011年8月24日 没有评论

当前的Web应用中少不了flash,有时候当前页面需要跟flash交互,交互的桥梁是通过javasript来实现,javascript能够调用到flash中定义的方法,同样的flash中也可以调用到javacript的方法。

点这里 查看演示例子 ||  点这里 下载完整代码

flash可以用 ExternalInterface.call(“swfCall” [,arg1[,arg2]]) 的方式来调用javacript中定义的swfCall方法,参数为可选;但是javascript中调用flash的方法,需要flash指定那些方法能调用,例如在flash的代码

ExternalInterface。addCallback("setFlashVal", flashFunction);

function flashFunction(msg) {
	//do something
}

function flashFunction_1(msg) {
	//do something
}

javascript中就可以调用到flashFunction,但调用的方法名是setFlashVal,由于flashFunction_1没有导出,所以页面javascript无法访问到。IE跟Firefox、chrome获取flash对象的方式不同,IE是用window对象,Firefox等则是用document对象。具体参看下面代码:

function getSwfObject(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName]
	}else{
		return document[movieName]
	}
}

getSwfObject('swfId').setFlashVal('text');

其中movieName是flash的ID,即<object>标签中定义的ID、或者是embed标签的name属性值,最好这两个值保持一致,否则可能在不同的平台下无法正常工作。

分类: web前端 标签: , , , ,

Centos下连接打印机

2011年8月24日 没有评论

利用cups能正确连接到打印机。在浏览器中输入 http://localhost:631/ 后出来配置界面,选择 “Add Printer”,在name中输入打印机的名字(本地显示的名字),Location输入打印机的IP地址,下一步是选择设备,在Device中选择打印机对应的设置,例如:AppScoket/HP JetDirect,下一步,Device URI填写socket://打印机的IP,再下一步在Make中选择HP(实际根据打印机的型号来选择),下一步出来的Model中选择对应的驱动,然后点 “Add Printer”即完成打印机的连接。

另外通过系统-〉管理-〉正在打印 中可以看到刚才安装的打印机。

分类: Linux 标签: , ,

使用ImageMagicK给图片添加边框

2011年8月19日 没有评论

ImageMagicK处理图片的功能 十分强大,本文通过例子的方式来介绍一下如果给图片添加边框。

添加边框有两种方式,一是使用?-bordercolor(边框颜色)和-border(边框的宽度),另外一个是用-mattecolor(边框颜色)加-frame(边框的几何形状),下面分别用例子来说明上述两种创建方式。

原始图片(文件名为exam.jpg)如下:

执行命令:convert exam.jpg -bordercolor blue -border 5 border-1.jpg 后生成新图片如下:

边框的颜色可以使用 #00ffcc 的方式,但是需要用双引号包起来,另外可以在一个命令行中给图片加几层边框。
执行命令:convert exam.jpg ?-bordercolor blue -border 5 -bordercolor “#00ff00″ -border 5 ?border-2.jpg,结果如下图:

通过上述的方法,似乎生成的边框都是一样框的,可以用第二种方式来生成不一样的边框. 阅读全文…

javascript下动态创建IMG时IE6两次请求指定资源

2011年8月19日 没有评论

众所周知js可以通过document.createElement方法创建DOM对象,并可以把增加到页面上,今天碰到一个怪异的事情,使用如下代码动态创建一个Img

function req() {
	var el = document.createElement('IMG');
	el.src = '资源的WEB地址';                 //line 3
	document.body.appendChild(el);          //line 4
}

在某种特定的调用req方法时,发现在IE6会有两次请求“资源的WEB地址”,其他浏览器都是正常,真是万恶的IE6啊。由于req方法是另一个函数调用的,以后是多次触发了req方法,经过多方的debug,发生确实只调用了一次req,所以产生问题的原因就是在req方法的内部,对于这么简单的代码,唯一可以修改的地方把第3、4行代码换一下位置,调整后,发现IE6正常了,只请求一次了,测试其他浏览器也是正常,唉,再次BS一下IE6。

 

分类: web前端 标签: , ,

iframe中的swf无法调用页面中的js函数

2011年8月19日 没有评论

主页面中存在一个iframe,目的是让iframe在后台处理一些事情,所以把iframe的width,height设置为1个像素,同时设置visibility为hidden,iframe指向的页面中嵌套了一个swf,该swf是flash、as3,as3脚本中是读取flash的SharedObjects中存放的值,并把该值传回给页面的js函数。直接访问这个iframe的页面能够正常工作,即flash能调用到页面上的js函数,但是访问主页面时,FF、safari、chrome也是正常工作,IE6、8就歇菜了,没有反应,经过一番的查找问题,发现根源是iframe不能是隐藏的,即把visibility设置为visible或者去掉visibility的设置就可以了。

分类: web前端 标签: , , , , ,

windows下使用SecureCRT登陆AWS EC2服务器

2011年8月17日 2 条评论

SecureCRT是windows下一款连接linux服务器的优秀软件,通过它可以方便的操作多台服务器,如果是自己的服务器,知道帐号密码,很轻松就能连上服务器,AWS的EC2服务器不是采用用户名加密码的认证方式,而是用密钥来认证,在创建instance时,会提示使用以前(如果存在)或创建一个新的key pair,同时会提示下载一个xxx.pem的密钥文件到本地硬盘,在Linux下使用terminal登陆aws的ec2很容易,例如:ssh -i xxx.pem ec2-user@public dns,用户名固定是ec2-user,注意xxx.pem的权限是600,public dns在web的管理后台选中某个instance,在Description可以找到,但是SecureCRT中不能直接使用xxx.pem,需要借助linux系统创建一个xxx.pem对应的xxx.pem.pub文件,具体操作如下:

1 上传文件到linux系统下,确保其权限是600, 命令 chmod 600 xxx.pub
2 改写密钥格式为 OpenSSH,如果询问passphrase可以留空(直接回车)命令 ssh-keygen -p -f xxxx.pem
3 生成公密钥 .pub 文件 命令 ssh-keygen -e -f xxxx.pem > xxxx.pem.pub

至此,就创建了在SecureCRT中所使用的验证文件.

在SecureCRT选连接->新建会话->协议选择ssh2 下一步 -> 主机名填写public dns 下一步,用户名填写ec2-user 下一步 -> 完成.
在连接的列表中找到刚创建的连接,右键属性,左边树中选择SSH2,然后选择右边鉴权中公钥,点属性,在出来的对话框中选择使用身份或证书文件,通过浏览文件指定到刚在Linux下生成的文件即可.注意xxx.pem.pub和xxx.pem要在同一文件夹下,而且公钥的文件名一定要是下载下来的文件名后加.pub,否则会提示找不到私钥的.

分类: Linux 标签: , , , ,

linux下shell的浮点数四则运算

2011年8月14日 没有评论

shell下的四则运算有两种方式,一个是使用expr,另外一个用$(()),例如 expr 数1 运算符(+-*/)  数2或$(( 数1 运算符(+-*/)  数2)),需要注意的是使用expr时操作符的前后需要一个空格.但是上述两个都不能进行浮点数的运算,为了达到计算浮点数,可以借助命令awk来实现.例如 awk ‘BEGIN{print 7.01/5+2.3 }’执行后结果为3.702.如果两个操作数是保存在变量中,必然 a=2.2,b=5,需要计算a除以b该怎么操作呢? awk ‘{print $a/$b}’,很可惜,这样是不行的,似乎在awk里面无法通过$a来获取变量的值,但是可以通过echo的方式把变量值传入, echo “$a $b” | awk ‘{print $1/$2}’,这样就可以了,如果还是操作数,都加在echo中就行了.

分类: Linux 标签: , , , ,

兼容各个浏览器的右下角提示框代码

2011年8月12日 没有评论

现在很多网站都喜欢在右下角出现一个信息提示框,当然有些广告也这么做,不管页面怎么滚动,提示框的位置始终位于右下角,查看效果,对于非IE6的浏览器,问题很简单,只要在css中设置position为fixed即可,但IE6不支持fixed属性。解决这个问题的方法大部分使用javascript来做,监听页面滚动的事件,然后实时计算出提示框的top值并把此值赋给提示框。本文要讲的是js的另一种用法,直接在css中通过eval来执行js,具体参看下面示例代码。另外同时用到了css hack技术,在css的属性前加符号“_”话,只有IE6才能识别并应该。注意 css 中 *html的代码解决滚动时候提示框闪动的问题。

本人认为此文最大的价值是明白了javascript代码也能隐藏在css中执行,不得不说脚本真是太强大~~~

 

<!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>demo</title>
<style>
    #top{
        border:1px solid blue;
		background:#ccc;
        width:200px;
		height:150px;
        position:fixed;
        _position:absolute;
        bottom:0;
        right:0;
		_top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));
    }

    *html{
        background-image:url(about:blank);
        background-attachment:fixed;
    }
</style>
</head>
<body >
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />

<div id="top">
	测试效果
</div>
</body>
</html>

本人参考借鉴 http://loo2k.com/ie6-position-fixed/ 中的知识

分类: web前端 标签: , , ,

nginx中关于页面缓存的配置

2011年8月12日 3 条评论

根据nginx的文档,可以通过使用expires 指令来操作。

该指令会在响应的header信息中增加一个 Expires 和一个 Cache-Control: (如果时间是负数no-cache,反之max-age = * 为您指定时间的秒数)的信息.如果不想缓存某些页面,可以针对某些页面配置以下expires ,可以用 expires -1;使用这样就相当于为指定的资源在响应请求时在header中加了Cache-Control:no-cache 信息.

经过测试,在IE6和8下都能正常工作,即每次通过F5刷新,应答的状态码都为200,但是Firefox3.6、chrome下,F5刷新后看到的应答状态码为304,也就是说依然读取的是缓存信息,没有达到不缓存的目的,使用FireBug(好工具啊)查看响应的header信息中也有Cache-Control:no-cache,这问题让我困扰好一阵,在网上狂找一起,也没有发现到底是为什么。后来无意中在IE8下的httpwatcher5下看到了一个warnning信息,内容为:The ‘no-cache’ directive was used without the ‘no-store’ directive. Using ‘no-store’ ensures that Firefox will always re-fetch HTTP based pages and never use a previous version.从这个里面得到启示,然后再nginx中使用add_header增加一条add_header Cache-Control no-store指令,然后再测试,Firefox,chrome的应答都能不让客户端缓存。进一步测试,发现只要设置了no-store,不要no-cache,甚至 expires 时间为正数时都不会被缓存了。

add_header Cache-Control no-store

另外如果先前页面已经是缓存的,在nginx配置中设置了不缓存(no-store),也重启nginx服务器,在ie下,用F5刷新还是返回304,除非ctrl+F5应答才会是200,当然此后再F5依旧是200。如果要立即生效,最好是修改一下那个页面,让浏览器知道页面已经被更新,好重新获取页面内容。

 

分类: Linux 标签: , , ,

无觅相关文章插件,快速提升流量