2245892

 
 

Powered by: 博客园
模板提供:沪江博客
博客园 | 首页 | 发新随笔 | 发新文章 | 联系 | 订阅订阅 | 管理

2012年2月16日

WinUI开发时Upgrade问题

做客户端开发的人员往往有着一些困惑,自动更新程序是自己编写一个,还是买成品。其实我个人认为,自己编写一个自动更新的客户端动态库很简单。而且可以作为以后的通用更新程序。接下来就在这儿班门弄斧一下吧!

1、服务器端口发布Upgrade.asmx的服务,客户端每次启动时读取服务中的GetXmlList方法获取一下最新的程序清单,一般程序清单为这样的xml文件

<?xml version="1.0" encoding="utf-8" ?>
<UpdateFileList>
<File path="de\ZedGraph.resources.dll" url="http://192.168.1.110/WebService/Upgrade/de/ZedGraph.resources.zip"
lastVer="5.0.9.30511" size="5" needRestart="true" />
<File path="es\ZedGraph.resources.dll" url="http://192.168.1.110/WebService/Upgrade/es/ZedGraph.resources.zip" 
lastVer="5.0.9.30511" size="5" needRestart="true" />
 </UpdateFileList>

lastVer为最终dll版本,url为更新文件路径,needRestart为更新了这个文件系统是否需要重启

2、将清单对象与本地对象LocalUpgradeFileItem进行比较,如果lastVer不同马上更新,如果没有该文件就删除

 

//获取待更新、添加类文件列表
            foreach (UpgradeFileItem i in serverFileItems)
            {
                addFlag = true;
                foreach (LocalUpgradeFileItem j in localFileItems)
                {
                    if (i.Path.ToLower().Equals(j.Path.ToLower()))
                    {
                        addFlag = false;

                        //加载待更新文件列表
                        if (!i.LastVer.Equals(j.LastVer))
                        {
                            updateFileItems.Add(new LocalUpgradeFileItem(i.Path, i.LastVer, i.Url, i.NeedRestart, i.Size, 1));
                            totalSize += i.Size;
                            break;
                        }
                    }
                   
                }
                if (addFlag)
                {
                    //加载待添加文件列表
                    updateFileItems.Add(new LocalUpgradeFileItem(i.Path, i.LastVer, i.Url, i.NeedRestart, i.Size, 2));
                    totalSize += i.Size;
                }
            }

核心代码就这么几句完事,删除dll文件的代码在循环里加上几句话就可以了。

当然,每次程序升级维护人员就比较麻烦了,需要更新服务器端的程序文件!而且和物理文件位置必须保持一致!

顺便灌灌水:安庆男科医院

posted @ 2012-02-16 17:32 风之泪 阅读(21) 评论(0) 编辑
 

2010年6月15日

从Web1.0时代到Web2.0时代

Web2.0代表的是一个新的网络阶段,它本身并没有特别的标准来进行描述,一般我们将促成这个阶段的各种技术和相关的产品服务统称为web2.0,这一新概念带动了技术和社会的新变革。

Web2.0与Web1.0的比较:

Web2.0是相对Web1.0的新的一类互联网应用的统称。由Web1.0单纯通过网络浏览器浏览html网页模式向内容更丰富、联系性更强、工具性更强的Web2.0互联网模式的发展已经成为互联网新的发展趋势。Web1.0的主要特点在于用户通过浏览器获取信息,web2.0则更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者。Web1.0到Web2.0的转变,具体的说,从模式上是单纯的由“读”向“写”、“共同建设”发展。所以互联网下一步,是要让所有的人都忙起来,用全民力量共同织出贴近生活的网。到目前为止,对于web2.0概念的说明,通常采用web2.0典型应用案例介绍,加上对部分Web2.0相关技术的解释。下面从知识生产、内容生产、交互性和技术等角度比较两者的区别:

从知识生产的角度看,Web1.0的任务,是将以前没有放在网上的人类知识,通过商业的力量,放到网上去。Web2.0的任务是,将这些知识,通过每个用户的浏览求知的力量,协作工作,把知识有机的组织起来,在这个过程中继续将知识深化,并产生新的思想火花;从内容产生的角度看,Web1.0是商业公司为主体把内容往网上搬,而WEB2.0则是以用户为主,以简便随意方式,通过blog/podcasting方式把新内容往网上搬;从交互性看,Web1.0是网站对用户为主;Web2.0是以P2P为主;从技术上看,Web客户端化,出现胖客户端模式,比如GoogleMAP/Gmail技术。

Web2.0时代,用户在互联网上的作用越来越大。他们贡献内容,传播内容,而且提供了这些内容之间的链接关系和浏览路径。在SNS里面,内容是以用户为核心来组织的。Web2.0是以用户为核心的互联网。伴随着Web2.0的诞生,互联网进入了一个更加开放、交互性更强、有用户决定内容并参与共同建设的可读写网络阶段。

Web2.0相关技术介绍:

1、P2P技术

P2P即Peer to Peer,称为对等连接或对等网络,P2P技术主要指由硬件形成连接后的信息控制技术,其代表形式是软件。

目前互联网主要技术模式是S/C方式,此方式要在互联网上设置拥有强大处理能力和大带宽的高性能计算机,配合高档的服务器软件,再将大量的数据集中存放在上面,并且要安装多样化的服务软件,在集中处理数据的同时可以对互联网上其他PC进行服务,提供或接收数据,提供处理能力及其他应用。对于一台与服务器联机并接受服务的PC机来说,这台PC机就是客户机,其性能可以相对弱小。而P2P技术的特征之一就是弱化了服务器的作用,甚至取消服务器,任意两台PC互为服务器,同时又是客户机,即对等。右面是P2P与S/C方式的一些比较:

S/C方式造成互联网络上的集中,无论信息资源还是成本资源均向同一方向集中,这样的模式符合一对多、强对弱的社会关系形式,如政府对个人、对企业,大企业对小企业,学校对学生,企业对职工等等关系。所以S/C方式是符合市场需求的。P2P方式将导致信息数量、成本资源都向互联网各点均匀分布,也就是所谓“边缘化”的趋势。此模式符合“一对一”的特点,以及彼此相当的社会关系形式,如个人对个人,规模相当的企业之间,等等,这也是符合市场需求的(如ICQ)。所以这两种方式会共存,有关P2P即将替代S/C模式的说法是不成立的。P2P有其独特的市场空间,是现有互联网应用的补充,这一点应该是毫无疑问的。

2、Blog技术

 

作为Web 2.0 时代的互联网新应用,Blog 在2005 年获得了突破。在相继成为网络、报纸、杂志和电视等众多媒体的热门词汇之后,Blog从一种很少涉及的专家应用发展成了基础的互联网应用。

3、Ajax技术

   Ajax 是“Asynchronous JavaScript and XML”英文缩写,综合了XHTML/CSS(层叠式页面)、DOM(文档对象模型)、XMLHttpRequest 和JavaScript 等多项网络技术与服务。Ajax 的工作原理是通过在用户和服务器之间添加一个中间层来实现用户操作与服务器响应的异步化。应用Ajax 后,原本服务器承担的一些简单工作被转移到客户端,由客户端在闲置时完成。这样不但可以减轻服务器的工作压力,还可以实现节约带宽的双重目的。由于Ajax 具有的这些优点,它被广泛地应用于Web 2.0 的众多应用中。

  在传统的Web1.0时代,网页的原理属于“同步回发”的。具体的说就是在用户在客户端页面点击网页某一个按钮,服务器接收到这个请求的时候从IIS中将整个页面渲染出来,然后再将整个页面一次性发到客户端,客户端在接受到这个页面后,会将当前这个页面更新出来。

  后来,人们逐渐发现这种做法是没有必要且消耗资源的,因为当用户在客户端点击网页的某个按钮的时候往往只需要更新网页的某一小块,对于网页的其它部分是不需要刷新的,基于这种初衷。Web2.0时代来临了。

4、XML技术

XML 是“eXtensible Markup Language”的英文缩写,中文译做“可扩展标记语言”。在XML 出现之前,几乎所有的Web 页面都是使用HTML编写。XML 将SGML 的丰富功能与HTML 的易用性结合到了Web 应用中,它允许定义数量不限的标记来描述文档中的资料,同时允许嵌套的信息结构。HTML 主要用于描述Web 页的显示格式,而XML 着重描述Web 页面的内容。XML 的广泛应用直接促成了Web2.0 时代的到来,开辟了Web 应用的新天地。  

posted @ 2010-06-15 14:41 风之泪 阅读(574) 评论(0) 编辑
 

2010年2月24日

火狐、IE对JavaScript的解析

一段很简单的JavaScript代码:

var inputValue = $('txtUserName').value.trim();

var UserName=document.getElementById("txtUserName").value;

注意:'txtUserName'如下

<input type="text" name="txtUserName" maxlength="20" style="height: 18px; width: 125px" onkeypress="setFocus()" />

在IE中能够正常执行,而在火狐中却不能,提示$('txtUserName') is null,document.getElementById("txtUserName") is null。查了很长时间,发现用document.forms['LoginForm']['txtUserName'].value;即可获取该对象,网上说火狐不支持用document.getElementById获取textbox服务器端控件。郁闷!

总结:

 

1. document.form.item 问题
(1)现有问题:
现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在Firefox(火狐)下运行
(2)解决方法:
改用 document.formName.elements["elementName"]

2. 集合类对象问题
(1)现有问题:
现有代码中许多集合类对象取用时使用 (),IE 能接受,Firefox(火狐)不能。
(2)解决方法:
改用 [] 作为下标运算。如:document.forms("formName") 改为 document.forms["formName"]。
又如:document.getElementsByName("inputName")(1) 改为 document.getElementsByName("inputName")[1]

3. window.event
(1)现有问题:
使用 window.event 无法在火狐浏览器上运行
(2)解决方法:
火狐 的 event 只能在事件发生的现场使用,此问题暂无法解决。可以这样变通:
原代码(可在IE中运行): <br /><input type="button" name="someButton" value="提交" onclick="javascript:gotoSubmit()"/><br />...<br /><script language="javascript"><br />function gotoSubmit() {<br />...<br />alert(window.event); // use window.event<br />...<br />}<br /></script>

新代码(可在IE和火狐中运行): <input type="button" name="someButton" value="提交" onclick="javascript:gotoSubmit(event)"/><br />...<br /><script language="javascript"><br />function gotoSubmit(evt) {<br />evt = evt ? evt : (window.event ? window.event : null);<br />...<br />alert(evt); // use evt<br />...<br />}<br /></script>
此外,如果新代码中第一行不改,与老代码一样的话(即 gotoSubmit 调用没有给参数),则仍然只能在IE中运行,但不会出错。所以,这种方案 tpl 部分仍与老代码兼容。

 

4. HTML 对象的 id 作为对象名的问题
(1)现有问题
在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在火狐中不能。
(2)解决方法
用 getElementById("idName") 代替 idName 作为对象变量使用。

 

5. 用idName字符串取得对象的问题
(1)现有问题
在IE中,利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象,在火狐中不能。
(2)解决方法
用 getElementById(idName) 代替 eval(idName)。

 

6. 变量名与某 HTML 对象 id 相同的问题
(1)现有问题
在 火狐 中,因为对象 id 不作为 HTML 对象的名称,所以可以使用与 HTML 对象 id 相同的变量名,IE中能。
(2)解决方法
在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。
此外,最好不要取与 HTML 对象 id 相同的变量名,以减少错误。

7. event.x 与 event.y 问题
(1)现有问题
在IE 中,event 对象有 x, y 属性,火狐中没有。
(2)解决方法
在火狐中,与event.x 等效的是 event.pageX。但event.pageX IE中没有。
故采用 event.clientX 代替 event.x。在IE 中也有这个变量。
event.clientX 与 event.pageX 有微妙的差别(当整个页面有滚动条的时候),不过大多数时候是等效的。

如果要完全一样,可以稍麻烦些:
mX = event.x ? event.x : event.pageX;
然后用 mX 代替 event.x
(3)其它
event.layerX 在IE与火狐中都有,具体意义有无差别尚未试验。

 

8. 关于frame
(1)现有问题
在 IE中 可以用window.testFrame取得该frame,火狐中不行
(2)解决方法
在frame的使用方面火狐和ie的最主要的区别是:
如果在frame标签中书写了以下属性:
<frame src="xx.htm" id="frameId" name="frameName" />
那么ie可以通过id或者name访问这个frame对应的window对象
而火狐只可以通过name来访问这个frame对应的window对象
例如如果上述frame标签写在最上层的window里面的htm里面,那么可以这样访问
ie: window.top.frameId或者window.top.frameName来访问这个window对象
火狐: 只能这样window.top.frameName来访问这个window对象

另外,在火狐和ie中都可以使用 window.top.document.getElementById("frameId")来访问frame标签
并且可以通过window.top.document.getElementById("testFrame").src = 'xx.htm'来切换frame的内容
也都可以通过window.top.frameName.location = 'xx.htm'来切换frame的内容
关于frame和window的描述可以参见bbs的‘window与frame’文章
以及/test/js/test_frame/目录下面的测试

9. 在火狐中,自己定义的属性必须getAttribute()取得


10.在火狐中没有 parentElement parement.children 而用
parentNode parentNode.childNodes
childNodes的下标的含义在IE和火狐中不同,火狐使用DOM规范,childNodes中会插入空白文本节点。
一般可以通过node.getElementsByTagName()来回避这个问题。
当html中节点缺失时,IE和火狐对parentNode的解释不同,例如
<form>
<table>
<input/>
</table>
</form>
火狐中input.parentNode的值为form, 而IE中input.parentNode的值为空节点

火狐中节点没有removeNode方法,必须使用如下方法 node.parentNode.removeChild(node)

 

11.const 问题
(1)现有问题:
在 IE 中不能使用 const 关键字。如 const constVar = 32; 在IE中这是语法错误。
(2)解决方法:
不使用 const ,以 var 代替。

12. body 对象
火狐的body在body标签没有被浏览器完全读入之前就存在,而IE则必须在body完全被读入之后才存在

13. url encoding
在js中如果书写url就直接写&不要写&amp;例如var url = 'xx.jsp?objectName=xx&amp;objectEvent=xxx';
frm.action = url那么很有可能url不会被正常显示以至于参数没有正确的传到服务器
一般会服务器报错参数没有找到
当然如果是在tpl中例外,因为tpl中符合xml规范,要求&书写为&amp;
一般火狐无法识别js中的&amp;

 

14. nodeName 和 tagName 问题
(1)现有问题:
在火狐中,所有节点均有 nodeName 值,但 textNode 没有 tagName 值。在 IE 中,nodeName 的使用好象
有问题(具体情况没有测试,但我的IE已经死了好几次)。
(2)解决方法:
使用 tagName,但应检测其是否为空。

 

15. 元素属性
IE下 input.type属性为只读,但是火狐下可以修改

 

16. document.getElementsByName() 和 document.all[name] 的问题
(1)现有问题:
在 IE 中,getElementsByName()、document.all[name] 均不能用来取得 div 元素(是否还有其它不能取的元素还不知道)。

17.最简单的鼠标移过手变型的css要改了

cursor:pointer;/*ff不支持cursor:hand*/ dw8下面自动出来的也没有hand这个属性了,标准的是pointer

 

18.ff不支持滤镜 最常见的半透明不支持。

filter: Alpha(Opacity=50); /* for IE */
opacity: .5;/* for Firefox */

style="-moz-opacity:0.5; filter:alpha(opacity=50);cursor:hand;" onmouseover="this.style.MozOpacity=1;
this.filters.alpha.opacity=100" onmouseout="this.style.MozOpacity=0.5;
this.filters.alpha.opacity=50"

 

19.ff不支持expression 例如去掉链接的边框要分别写不同的css

a,area { blr:expression(this.onFocus=this.blur()) } /* for IE */
:focus { outline: none; } /* for Firefox */

 

20.ff不支持div滚动条的颜色设置,目前还没有找到替换的 好方法。

.contendiv {
position: absolute; left: 0px; top: 10px; width: 580px;height: 135px;
line-height:120%;text-align:left; font-family:"宋体";word-break : break-all; color:#6D6E71;
OVERFLOW-Y:auto;OVERFLOW-X:no;
SCROLLBAR-ARROW-COLOR: red; SCROLLBAR-TRACK-COLOR: F6F6F6;SCROLLBAR-FACE-COLOR:#F6F6F6;SCROLLBAR-SHADOW-COLOR:#F6F6F6;
SCROLLBAR-DARKSHADOW-COLOR:#F6F6F6;SCROLLBAR-3DLIGHT-COLOR:#F6F6F6;SCROLLBAR-HIGHLIGHT-COLOR:#F6F6F6;
}

这个在ff里面完全没有效果了。

 

21.ie下面显示在文字下面横线的

border-width: 0px 0px 1px 0px;在ff里面跑到文字上面去了。(查了手册还是没有找到解决的办法感觉莫名奇妙~~ 原来是ff的容错能力太差了,是下面的width: 186px;height: 0px;宽高 引起的,其实a:haver已经继承了上级的属性了,只要定义不同的样式就可以了,看来ff有助于制作标准化,简洁化的网页啊,对css的理解也更深刻, 对提供css来说是个很好的帮助)

.onelinksdiv a:hover {
display: block;border-style: solid;color: #ff0000;border-width: 0px 0px 1px 0px;
/*
display: block;border-style: solid; border-width: 0px 0px 1px 0px;
width: 186px;height: 0px; color: #ff0000; font-size: 14px;text-align: right;
*/
}

//下面的写法在ie下面正常,但在ff下是错误的

.onelinksdiv a:hover {
display: block;border: #ff0000 solid; border-width: 0px 0px 1px 0px;
width: 186px;height: 0px; color: #ff0000; font-size: 14px;text-align: right;
}

相关参考资料:

border-width:border-top-width border-right-width border-bottom-width border-left-width;

p#fourborders
{
border-width:thick medium thin 12px;
}

如果定义四个值,那么这四个值就分别是上,右,下,左边框的宽度值(从上边框开 始,以逆时针的顺序遍历).

等价于下面的定义

p#fourborders
{
border-top-width:thick;
border-right-width:medium;
border-bottom-width:thin;
border-left-width:12px;
}

 

22.ff不支持<body scroll="no" > scroll属性

必须定义overflow:hidden;而且要在html标签下,不能在 body下

html{
overflow:hidden;
}

 

23.ff不支持数据岛绑定

<xml id="news" src="news.xml" ></xml>在ie下可以加载进数据,但到了火狐就加载不进数据了,开始以为可能是因为内容行文字太多导致不能断行不能加载,但删除 只剩几个字以后一样不行。

 

24.style="word-break:break-all"在网页中的单元 格里的内容超出一行时,在ie浏览器里定义的换行样式能够正常使 用,但在firefox里却不能被支持了.style="word-break:break-all" 是MS扩展的IE专有属性,并未成为W3C标准,因而 Firefox 还不能支持它。不过MS已经将其提交到了W3C,而在W3C的CSS3的候选方案中也能看到它。希望这个属性在被W3C最终定案的为CSS3标准 后,Firefox可以支持吧。这之前,可以试试
style="table-layout:fixed;word-wrap: break-word" (当它是英文的时候就不能正常换行了)

 

25.目前FF2.0为止都不支持IE的name锚 点

像这种写法都是不支持的:<a href="###" onclick="history.go(-1)">go back</a>
原来根据W3C的语法,<a>标签始终都会查找href地址并跳转过去,现在onclick事件与###这个地址又有冲突。

为了让Firefox与IE部分元素属性兼容,那个费劲,我无意中发现 Firefox对空格敏感:
<a onclick="window.location.href ='faq.php?page=messages#2'"> //有空格,锚点作用
<a onclick="window.location.href='faq.php?page=messages#2'"> //无空格,锚点无作用

锚点的写法又十分讲究,比如<a name=#1>,Firefox不支持锚点,得加上id=#1
静态同页面引用时必须这样写:<a href="#1"></a>,<a href="static.html#1"></a>就不行,动态页面要用JS

后遗症来了,考虑到鼠标样式和浏览器兼容又开始折腾:
<a href="###" onclick=""> //不兼容
<a href="javascript:;" onclick=""> //不兼容
<a href="javascript:function();">   //没有{...},属于脚本的非法书写
<a style="cursor:hand" onclick=""> //没照顾到自定义系统鼠标样式的用户
<a href="javascript:onclick=''"> //状态栏会显现,href有多长显示多长
<a href=# onclick=""> //我用的

 

26.ff火狐下面不支持document.all 属性的,必需用document.getElementById('idName');

以下是我的动画切换效果,在ie下正常,到了火狐里面就不动了,修改后可以切换图 片但渐隐渐现的效果就没有了。原因是火狐不支持滤镜filter,只好用半透明的div来实现了。

   /*
company page
*/
function playcompanyimg()
{

window.setInterval('changecompanyimg();', interval);
}
function changecompanyimg()
{
/*
火狐下面不支持document.all属性的,必需用document.getElementById('idName');
*/
    //if (document.all)
//{

   /**
   以下两句是在切换效果前切换背景图片的代码,number、image和idtemp要设置全局变量才可以
   */
number = Math.floor(Math.random() * image.length);
   idtemp.src=image[number];
   //alert(number+" ii "+idtemp.src)
   /**
   以下两句是实现幻灯片切换效果的
   */
   //alert(do_transition);
   //document.all.companyimg.style.filter="progid:DXImageTransform.Microsoft.Fade(duration=2,overlap=0.4)";
   /*
   document.all.companyimg.style.filter="progid:DXImageTransform.Microsoft.Fade(duration=1,overlap=1)";
   document.all.companyimg.filters[0].Apply();
   document.all.companyimg.filters[0].Play();
   */
   var companyimgidtmep = document.getElementById('companyimg');
   companyimgidtmep.style.filter="progid:DXImageTransform.Microsoft.Fade(duration=1,overlap=1)";
   companyimgidtmep.filters[0].Apply();
   companyimgidtmep.filters[0].Play();
    //}
}

参考资料:核 心:FILTER:revealTrans(duration=1,transition=23); 一个IE滤镜,  
   
在其它的非IE浏览器虽然不支持这个滤镜,但是支持透明滤镜的,你可以分一下,IE下继续使用你这个效果,而在非IE浏览器下用透明滤镜:

style.opacity
opacity = 0.5 CSS3

style.MozOpacity
-moz-opacity: 0.5 Mozilla 里等同上面这个滤镜 这个滤镜也适用于Netscape

style.KHTMLOpacity
-khtml-opacity: 0.5 Safari 里的透明滤镜。

IE:
obj.filters.alpha.opacity

to meizz(梅花雪)
其实我想过你那个问题的。但是透明 opacity 这个他不是一个渐变的过程。
一般这种图片过度特效最多持续一秒把,最多最多两秒 duration=2
超过2秒就很累赘,喧宾夺主了。
在2秒钟里面实现
g_img.style.filter="alpha(opacity="+i+")" 透明度的变化是比较累赘的事情。
要用 window.setInterval 改变 i 的值, 而且还要调用几十上百次window.setInterval
才能看到效果。
这样的话,我觉得得不赔失,是为了特效而特效了


另外一种考虑是,毕竟非ie浏览器是少数,即使在ff下 没有图片过度特效,其实也没什么,
还是很流畅,不过就是看不到ie里面的美而已。

 

27.ff下链接的onclick事件不起作用

<div id="bigwhatwedo" ><a href="javascript:onclick = display('whatwedo')" target="">我们做什么</a></div> 在ie下没有问题,在ff下点击了没有反应。作了多次尝试,换成onclick="display('whatwedo')"仍然不行,后来通过多次检 查,搜索仍然找不到门路,最后采用惯用的方法--一步一步alert();出来看效果,原来他妈的是一个id的值写错了,但奇怪的是ie下面没有关系?是 ie的容错内容太强了还是火狐的容错内容太差了?不过还是喜欢火狐的严谨和标准哈。可以让人发现不少深层次的东西。哈哈。

 

28.ff中div定位不能通过js初始化

必须先设定值并且要设定度量单位 top:80px;left:212px;

 

29.ff不能用.click();方法打开链接, 终于暂时性的解决了

<div><a href="#" onclick="test1(2)" id="a3_a">hello</a> </div>
<div>
<a href="" onclick ="test2(1)" id="b3">hello2</a></div>
<div><a href="javascript:onclick =test2(1)" id="b3">hello3</a>触发事件放在href="javascript:onclick =test2(1)" 里面ff无效</div>
<div onclick="test2(1)" id="b3">hello3</div>    
<script language="javascript">
<!--
function test1(num)  
   {  
       window.alert(num);  
    }  
    function test2(num)  
    {  
var aaa_a = document.getElementById("a3_a");
       if(document.all)      {//if(getOs()=="MSIE"){//IE的处理
          aaa_a.click();      
    }        
     else
    {
      var evt = document.createEvent("MouseEvents");
       evt.initEvent("click",true,true);
       aaa_a.dispatchEvent(evt);
     }  
   }  

/*

判断浏览器类型

*/
function getOs()
{
    var OsObject = "";
   if(navigator.userAgent.indexOf("MSIE")>0) {
        return "MSIE";
   }
   if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){
        return "Firefox";
   }
   if(isSafari=navigator.userAgent.indexOf("Safari")>0) {
        return "Safari";
   }
   if(isCamino=navigator.userAgent.indexOf("Camino")>0){
        return "Camino";
   }
   if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){
        return "Gecko";
   }
  
}

//-->   </script>

<!-- 由于这里的链接是index的iframe用href="#" 在ie中无法正常显示,
而用href="javascript:onclick = display('whatwedo')"的方式火狐不支持打开第一个链接,火狐必须用onclick="display('whoweare')"
本以为火狐浏览器使用的人很多,但从网站的统计分析来看火狐只有可怜的3.18%,但兼容他的标准确花费不少精力!不过标准化有利于以后的维护和扩展,有 利于技术的不断提示。
-->

 

30.OVERFLOW- Y:auto;OVERFLOW-X:hidden;在ie里面可以用no表示隐藏,但在ff里面必须用hidden

-------------------------

总结一下:目前有十个不兼容问题,还没解决的有:

1.ff不支持div滚动条的颜色设置,目前还没有找到替换的好方法,在许多标准 化的网站看到也是没有解决这个问题。

2.ff不支持数据岛绑定<xml id="news" src="news.xml" ></xml>在ie下可以加载进数据,但到了火狐就加载不进数据了,开始以为可能是因为内容行文字太多导致不能断行不能加载,但删除 只剩几个字以后一样不行。用w3c代码检测软件检测了一下,原来是自定义的xml标签通不过,所以火狐就不认了。

3.火狐不支持滤镜filter,无法实现图片切换中间变换的效果,只能通过透明 度来设置,但很麻烦.(这个目前暂不实现了)

 

posted @ 2010-02-24 08:40 风之泪 阅读(1051) 评论(0) 编辑
 

2010年2月1日

.net开发时的诡异问题,button的onclick事件无效

在以下页面中

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WCPhoto.ascx.cs" Inherits="WebUserControls_WCPhoto" %>

<table width="100%">
    <tbody>
        <tr>
            <td style="font-size:12px">上传图片:</td>
            <asp:UpdatePanel ID="_updatePanel" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <td>
                       <asp:FileUpload ID="_fileUpload" runat="server" Width="500px"/>                       
                    </td>
                   
                    <td>
                       <asp:RequiredFieldValidator ID="_rfvFileUpload" runat="server" ControlToValidate="_fileUpload" ErrorMessage="*"></asp:RequiredFieldValidator>
                    </td>
                   
                   
                </ContentTemplate>
                   
            </asp:UpdatePanel>
            <td>
                <asp:Button runat="server" ID="_btnSavePhoto" CssClass="ButtonStyle" Text="保存" onclick="_btnSavePhoto_Click" />
            </td>
        </tr>
    </tbody>
</table>

_btnSavePhoto的onclick事件无效,断点打上去没有反应,这个问题我查了整整1周,最后才发现是因为配置文件中的

 <httpModules>
      <add name="UploadModule" type="Webb.WAVE.Controls.Upload2.UploadModule, Webb.WAVE.Controls.Upload2"/>   

</httpModules>

这句话引起的,去掉就ok了。郁闷!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

可是去掉这句话后有些功能就用不起来了,如何在配置文件中正确配置,使得在这句话本身存在的前提下_btnSavePhoto按钮有效???待高手指点解决!!!

posted @ 2010-02-01 16:52 风之泪 阅读(494) 评论(0) 编辑
 

2009年12月19日

Web.config加密解密效率问题

  一般.net开发程序员基本都要遇到一个安全问题,而很多人会选择加密web.config中的一些重要的配置节来解决该问题。但实际上很多人会忽略一个效率问题,事实上无论你是用rsa算法还是WindowsDPAPI算法,每次使用这些节时.net编译器都会将密文解密成明文再执行。一般情况下解密效率是很高的,但是如果每秒要使用这些密文达到千次以上的话就会影响效率了(大型数据库数据挖掘时会经常用到)。针对这种情况,最直接的做法就是第一次解密后将明文存入.net  cache中(安全串),或者将明文存入一个static变量中。方法很笨,但很实用。

个人观点!

posted @ 2009-12-19 16:47 风之泪 阅读(29) 评论(0) 编辑
 

2009年10月24日

Asp.net ajax应用-成也UpdatePanel,败也UpdatePanel
摘要: 在刚刚发现UpdatePanel时,我欣喜若狂。为终于可以做到在不用写JavaScript的情况下实现异步更新而高兴。  但是才后来发现UpdatePanel在性能上与传统的PostBack没什么区别。因为UpdatePanel每次刷新时服务器端还是会将整个页面渲染后直接发到客户端(微软的win2003及以前版本IIS服务器和IE8及以前版本的客户端相互间没有提供这方面的接口,希望以后的服务器端和...阅读全文
posted @ 2009-10-24 14:04 风之泪 阅读(194) 评论(0) 编辑
 

2009年9月25日

必要的数据冗余
摘要: 我们在设计数据库时,常常为避免插入异常、更新异常而极力地遵循到第三范式。然而实际上在业务规则比较特殊的情况下却未必需要如此地遵守。例如在一张销售信息表中存储了销售信息和客户名称字段。在很多人看来这是违反第三范式的。然而,仔细来看在客户名称发生变化这种情况在客观世界中一般需要在工商等部门审批后才能生效的,而查阅以前的销售信息应该还是以前的客户名称。这样就保证了历史数据的可追溯性。所以在这种就不存在更...阅读全文
posted @ 2009-09-25 13:50 风之泪 阅读(40) 评论(0) 编辑
 
仅列出标题