鸟食轩

 Microsoft .NET[C#] MVP 2003
随笔 - 423, 文章 - 229, 评论 - 5376, 引用 - 189
数据加载中……

模态窗口被IE 7给糟蹋得不成样子了

    IE 7 Vista风格的UI在目前的xp风格下,真是难看。给人的感觉就是像一个蹩脚、花哨的共享软件,拼凑了很多"漂亮"的元素,实际上却和其目前环境的风格格格不入。如果说我这样的片面看法是因为审美惯性所致,那么IE 7对模态窗口不遗余力地糟蹋,真是让人无语了。

    在Windows XP的SP2(即Windows 2003的SP1)中,微软就对模态窗口作了一定的限制。比如,除非被访问的站点属于Local Intranet组中,否则不能隐藏窗口的状态栏。关于这个问题的详细信息请参看:《在XP+SP2下隐藏模态窗口的状态栏》一文。被SP2的限制强X的就快要习惯了的时候,IE 7来了,来就来吧,该来的始终回来。可是没有想到IE 7也对模态窗口如此感兴趣,又一次强X了它。现在的模态窗口,已经被X到面目全非的地步了,如下图:

    Modal-IE7.png

    上面这样的模态窗口用起来只有一个感觉,想哭

    这样两个窗口在IE6中的实现效果本来是:

    Modal-IE6.png

    虽然IE 7在Internet Options的Security选项中提供了设置:Allow websites to open windows without address or status bars,但还是很郁闷的说。

    当然有人会说这样的设计是为了提升网络操作的安全性,避免用户被恶意网页欺骗。其实这样的想法是比较幼稚的。除了机器被植入了木马这样的情况以外,很多时候由于用户的超低的安全意识,才是真正最危险的。而要想寄希望于一个通用的"娱乐型"浏览器来作为一个安全的交易平台,似乎本身就很搞笑。这是为什么呢?可以参看文章:网上银行安全事件的反思

posted on 2006-10-21 00:57 birdshome 阅读(6047) 评论(47)  编辑 收藏 所属分类: Jscript&Dhtml开发

评论

#1楼    回复  引用    

如果你不想看到这样的效果,请说服你的客户将你们的网站地址设为trusted不就行了吗。世界上数以亿计的人们使用ie,并希望看到那些弹出窗口到底从哪里来的,新功能满足了他们的需要,我觉得你的论调才真的幼稚。
2006-10-21 02:48 | adam[匿名] [未注册用户]

#2楼    回复  引用  查看    

@adam
从程序员的和客户的审美角度来看,是很难看,真如 birdshome说的那样,而且我也不同意你说的,客户并不想看到弹出窗口是从那里来的,因为程序员面对的客户,而不是一些上网浏览的网民,那些程序是用来完成工作的.而隐藏细节也是做程序的一个关键
2006-10-21 08:01 | 尧尧      

#3楼    回复  引用  查看    

实在是太难看了,有同感,IE6 还可以接受
2006-10-21 08:51 | 代码乱了      

#4楼    回复  引用    

B/S系统本来就不应该这样做,自作自受
2006-10-21 09:19 | ddf [未注册用户]

#5楼    回复  引用  查看    

BS系统应该怎么做,不应该怎么做?如何论定这个事情?楼上的回复,我不解
2006-10-21 09:24 | Jeason      

#6楼    回复  引用  查看    

MS就算是强X也强X得没艺术,要让用户明白是哪来的,只要将状态栏上的地址信息在不完整显示情况下滚动起来,不就可以提醒用户了吗?提供一个地址栏出来,难道要让用户手工输入地址么?
2006-10-21 09:29 | Edwin Liu      

#7楼    回复  引用  查看    

@ddf
那该如何做?
2006-10-21 09:48 | i.Posei      

#8楼    回复  引用  查看    

从程序员的和客户的审美角度来看,是很难看,真如 birdshome说的那样,而且我也不同意你说的,客户并不想看到弹出窗口是从那里来的,因为程序员面对的客户,而不是一些上网浏览的网民,那些程序是用来完成工作的.而隐藏细节也是做程序的一个关键
====================================

同感
2006-10-21 10:07 | 旭日东生[匿名]      

#9楼    回复  引用  查看    

因为程序员面对的客户,而不是一些上网浏览的网民
------------------------------------------
说的很对,但IE面对的是上网浏览的网民,而非程序员.
至于这个东东不能"隐藏细节",那我们这些程序员就应该另想办法
像新浪等邮箱,删除邮件时会弹出一个确定对话框,如果没记错,它是用DIV实现的,没有用模态窗口.
另外,在Atlas,当然,它现在改名字了,里边也提供了一种"模态"的实现,楼主不妨看看
别忘了,我们的客户,将来可能是这会儿用IE用这个系统,一转身,就成"上网浏览的网民"了,他用的,应该还是这个浏览器; 甚至我们自己,又何尝不是这样呢.
2006-10-21 11:11 | Amnoh      

#10楼    回复  引用  查看    

这能说是Microsoft错吗?哈哈////你就不会自己写个div去实现啊....



Microsoft没你说的这么差的...
2006-10-21 11:36 | wonder      

#11楼    回复  引用  查看    

只是ie7增强的安全特性罢了,这个世界还真奇怪,有人说ie的安全性不强,天天骂微软,还支持ff说什么用了ff就不会被强奸,微软增强了安全性,又有人说这样增加的安全性不好,真是难伺候
你要用模态窗口ff是根本就打不开,因为那个是ie特有的函数,ff是没有的,另外楼上说的很对加到trusted就行了,另外再说句话你别生气,就是你水平不行,要想得到最大的兼容性就用div,而且div是最漂亮的,就是写得麻烦点
2006-10-21 11:48 | ZergTant      

#12楼    回复  引用  查看    

别的不说,至少说不能向下兼容了,一样的代码应该一样的效果。
2006-10-21 11:52 | 布尔      

#13楼    回复  引用  查看    

有什么不好看么?我觉得挺好的,早就应该这样了
我最怕ie出模态窗口
2006-10-21 12:01 | lixiong      

#14楼    回复  引用  查看    

用DIV+IFrame+Ajax确实可做出类似模态窗口的效果(在这里针对的是做面向企业应用级的B/S系统,要有窗口的外观,且可以任意移动该伪窗口,还能在伪窗口呈现新的伪窗口[即支持嵌套]),但这工作量增加了不只一两倍,而且要可能要调整整个JS的框架。

但用模态窗口就没这么麻烦。

@ birdshome
不知想过用Popup win来实现模态窗口效果没有?这种工作量相对上面要小得多,且可带来更多的特效。只是不知MS以后还对其提供技术支持么?
2006-10-21 12:24 | Edwin Liu      

#15楼    回复  引用  查看    

只有用DIV了~FIREFOX和OPERA都郁闷那弹出窗口~
2006-10-21 12:26 | GoGoSonny      

#16楼    回复  引用    

确实如上面一位网友说,要做 B/S 应用,得遵循他的一些模式和规则,好多网站一上去,给你打开一个全屏窗口,什么也不显示,很让人讨厌。

像文中的这种应用模式,可以用 DIV 层去做,我记得 MS 网站上还是哪儿就有这种例子,另外一种做法是利用类似于 ASP.NET 2.0 Wizard 的方式去做,多步操作分解至多个连续的操作页面中,不要全部放在一个页面中

其实看看 Live Mail 和 SharePoint ,也能学到不少解决上述类似的方式。
2006-10-21 12:31 | moslem [未注册用户]

#17楼    回复  引用  查看    

不管怎样,,你认为再难看,始终都会被MS强制用户认同滴,呵~~
2006-10-21 13:16 | 柠檬籽      

#18楼    回复  引用    

都不敢轻易升ie了。也很担心客户升,否则原来开发的系统,可能在显示或者功能上出很多的问题...
2006-10-21 14:05 | henry[匿名] [未注册用户]

#19楼    回复  引用  查看    

atlas tookit Popup
2006-10-21 14:53 | neuhawk      

#20楼    回复  引用    

@adam[匿名]
“世界上数以亿计的人们使用ie,并希望看到那些弹出窗口到底从哪里来的,新功能满足了他们的需要,我觉得你的论调才真的幼稚。”
以程序员的观点片面看问题的愚蠢结论,数以亿计的用于用IE,除掉你们这些技术人员,普通用于根本就不知道那个所谓的上网的地址应该是什么样才是安全的。涉及到钱一类的敏感交易,就因该使用专用的协议和专用客户端。
2006-10-21 16:20 | chengliao [未注册用户]

#21楼    回复  引用    

B/S的系统去说服客户?太搞笑了吧,真是站着说话不腰疼。
2006-10-21 16:27 | bs [未注册用户]

#22楼 [楼主]   回复  引用  查看    

@Edwin Liu
修改现有代码代价太大了,如果是从新设计系统,考虑div+iframe或许可以。毕竟模态窗口没法用了:((

@moslem
这么一说,IE似乎应提供一个企业版和通用版,就像QQ的企业版,什么花里呼哨的东西都没有。
2006-10-21 16:42 | birdshome      

#23楼    回复  引用  查看    

隐藏地址栏,消灭状态栏,确实会使你的UI更加漂亮,但是牺牲的是客户的安全。假如我看见窗口上出现一个没有状态栏说明的连接,是不敢随便点击的。让用户看见域名,可以在一定程度上防止恶意的钓鱼网站。
浏览器是广大人民群众用的,必要的情况下安全为主。我们也是为用户服务的,不应该为了我们的私利牺牲大家的安全,没错吧。:)
再说了,你的程序适用于哪些平台、客户端,包括版本,都是应该在开发初期向用户说明的。一般说来应该写在《需求规格说明书》里,成为验收的依据。你无法为别人做的事情、未来出现的东西负责。客户决不会为此而生气——至少我是没遇到过——除非你在2006年说:我的客户端适用于win98+ie3.0。
2006-10-21 19:10 | 小陆      

#24楼    回复  引用    

我重来不用模态窗口
没有考虑浏览器兼容性的东西
2006-10-21 20:56 | 嘿嘿 [未注册用户]

#25楼    回复  引用  查看    

从现在看是要有一个观念,尽量别用模态窗口了.
2006-10-22 09:56 | Boler Guo      

#26楼    回复  引用    

@chengliao
以程序员的观点片面看问题的愚蠢结论,数以亿计的用于用IE,除掉你们这些技术人员,普通用于根本就不知道那个所谓的上网的地址应该是什么样才是安全的。涉及到钱一类的敏感交易,就因该使用专用的协议和专用客户端。

同意你最后一句话,但是你太低估上网用户的水平了。就算很多普通用户不知道"上网的地址应该是什么样才是安全的",那么IE提供该功能,然后用户们不就知道了吗,那些非法网站不是更不好混了吗?你的亲戚们不就更少因为中木马来麻烦你了吗?

认为用户不懂?这样的态度对待你的用户,太不专业。
2006-10-23 09:51 | adam[匿名] [未注册用户]

#27楼    回复  引用  查看    

同意楼上的。。。IE7现在这种做法才是正确的。。事实上楼主所说的因为显示地址带来了不安的话,,那以前也一样是存在的,,随便搞个什么软件就可以看到你说的模式窗口的地址
2006-10-23 10:04 | adonio      

#28楼    回复  引用    

IE也是一个应用程序,不要期望太高
2006-10-24 09:50 | A.Z[匿名] [未注册用户]

#29楼    回复  引用    

搂主怎么可以为了自己开发的方便而牺牲其它人的安全呢?很可笑。
2006-10-24 23:06 | zdnet [未注册用户]

#30楼 [楼主]   回复  引用  查看    

@zdnet
IE的不安全不是能不能看到一个URL和Status Bar就能有所改善的问题,任何希望把用户忽悠到IE上来进行高风险操作都是及其不负责任的,这已经不是可笑和不可笑的问题了。
2006-10-25 00:46 | birdshome      

#31楼    回复  引用    

@birdshome
任何希望把用户忽悠到IE上来进行高风险操作都是及其不负责任的,这已经不是可笑和不可笑的问题了。

As I know, all the famous banks in western countries use IE as default online financial business platform, and chinese too. They are all irresponsible?

u still don't understand u just serve your client. u choose what ur client chose. MS too. As a developer, you have no right saying IE7 is bad for u or it is bad for ur client. It is client's right.

And who is 忽悠ing client? That is u.
2006-10-25 10:25 | adam[匿名] [未注册用户]

#32楼 [楼主]   回复  引用  查看    

@adam[匿名]
    这显然是你们这些打着所谓为用户安全着想幌子的人在忽悠客户,这一点毋庸置疑,为什么呢?
    用国外的情况来套中国的情况,这是典型的形而上学。就算老外全都能了解url,了解弹出窗口。那么像 icbc, lcbc, 1cbc 这样的伪装域名,如果用户自已不小心看错了,算谁的问题呢?当然你们会毫不客气地说,用户stupid呗。但我觉得用户并不应该承担这样的安全风险和因该付出的代价。
Web天生就不是serve于这样的专用系统,IE也不是这样的专用平台。而且IE本身的问题就一箩筐,不知道你处于什么目的就要将用户忽悠到这样的client下,还自作聪明的以一些技术上的tricks来作为用户操作失误后的免责依据。
    IE不安全,这样的事实应该让用户知道,而不是把IE伪装的貌似安全(是不是还要用户理解掌握木马、病毒的手动查杀方法啊?),让更多用户肆无忌惮的在上面做任何敏感操作。
2006-10-25 11:39 | birdshome      

#33楼    回复  引用    

前一楼的那个adam是微软的吧?居然说开发员就没有权利对IE提出意见?开发员就不是用户了,这都是些什么强盗逻辑啊?今天微软的软件之所以有这么深广的发展普及,不都是众多三方厂家和二次开发者的劳动吗?你这样过河拆桥幸灾乐祸的嘴脸真是让人恶心。。。
2006-10-25 15:55 | ff [未注册用户]

#34楼    回复  引用    

@birdshome

first of all, I must say I am proud of what u did and what ur company did, obviously u guys are doing something very brilliant for your client. and ur blog is very good for all guys wanna know more about AJAX or DOM or js.

I said, chinese banks too. Can u tell me which chinese bank's online financial service is not based on IE? I argued with you just wanna tell u all the successful companies never complain what client has or what client chose, they just fit in with client ASAP.

u said I 忽悠客户, I tell u what I did. I carefully ask my client what he want, what he has and how mucn he want to pay for new stuff. and then I get client's hardware & software circumstance and make a dicision what I can do.

BTW, to that ff people, u misunderstanded what I said and I am not a MS staff.
2006-10-25 19:17 | adam[匿名] [未注册用户]

#35楼    回复  引用  查看    

@adam[匿名]

你太较真了,也喜欢对号入座。birdshome谈的是一种观点,有一定的代表性。
这种观点存在就有它本身的道理,只是你未触及到而已。你也不想你辛苦搭建起来的系统因为MS的一次升级,就破坏了整个系统的UI,客户只会认为你没做到位,他们不会管是否是什么安全原因IE升级起引起的。注意这是企业级用户,他们本身对应用系统是完全的信任。

再说网银,虽说目前银行都首先实现的是IE操作方式,但你应该注意这仅是普及版或大众版,能操作的功能也最大限度的减少,而丰富功能必须要下载客户端。这说明银行本身也认为IE是不安全的。

目前很多用过网银的客户帐户受损(前段时间已有大量报道),原因确实在于客户这端,电脑中了招,再使用IE操作网银是极不安全的。MS在下个Vista中,提供了针对这方面的技术改进以保护密码输入区不被窃听,注意不是IE,他们建议使用专用的网络客户端操作网银。

所有这些只是想表明,用浏览器本身去做网银操作,已是一种高风险的行为。这种观点应该让大众知道,从而避免很多人受害。

2006-10-26 09:31 | Edwin Liu      

#36楼    回复  引用    

@Edwin Liu

I think we are not talking about security issue here! No body said IE is more safe than FF, vice versa.

"这种观点应该让大众知道,从而避免很多人受害" is a very good point, and I totally agree with u, but that is not a developer's responsibility, to say nothing of software company.

"应该注意这仅是普及版或大众版,能操作的功能也最大限度的减少", can't disagree more. 普及版 & 大众版 included all the primary business and core service of a bank or a credit card company, that is the most important part to earn money and clients. That is why these companies choose IE, not for security reason, only for higher client base.

"丰富功能" is not necessary for client and "丰富功能" does not mean need higher security level, only better client experience. Two aspects.

Finally, we are not talking about security issue, we are talking about correct service attitude. and u really 喜欢对号入座 too.
2006-10-27 13:25 | adam[匿名] [未注册用户]

#37楼    回复  引用    

我只能说ie7处理的很粗糙。
首先,单纯显示地址栏没有意义,如果只是让用户对url一目了然,那么在状态栏上浮动显示即可。
其次,完全可以采取折中的办法,分情况处理,如果是跨域的url则显示地址栏,本域内的则不显示。这样的话,既保护了用户的知情权,也保证了企业网bs系统的美观。

总之,我再次看到了微软不加调查的敷衍了事行为。
2006-10-31 03:32 | xtr [未注册用户]

#38楼    回复  引用    

从此,做B/S的系统就越来越郁闷了

#39楼    回复  引用    

首先问一句,ie是叫internet explorer的吧?
编一个例子:如果某个地方有出租驴子共游客骑乘游山玩水,你租了一头过来磨面,并根据驴子的大小作了个套。有一天出租驴子的改出租马了,你发现用原来的套没办法拴马,要想磨面还得做一个。你认为该怨谁呢?
2006-11-24 23:09 | 路过 [未注册用户]

#40楼    回复  引用    

我个人非常,非常,非常,非常不喜欢web程序在弹出的窗口中隐藏任何东西,我会认为它把我的浏览器搞"坏"了,我的停止按钮,状态栏,这些我平时用的很多的东西被它给强x了,没法点到,如果右键还被禁止了,我会直接关了这网页,因为这会让我心情顿时很糟糕.
看看google是怎么做的,它使用最先进的技术,但页面是如此简单.这样界面就会很友好,不会让用户产生任何怀疑.
我恨滥用js,恨浏览器兼容性,恨ActiveX!web时代这些东西真的很让人挠头!
2007-01-12 11:50 | beyond456 [未注册用户]

#41楼    回复  引用    

首先,作为程序员,当然应该是客户利益为先,而不是以方便自己写程序为先。那么站在客户的角度,将来他们使用了IE7,你的程序就得改,你的技术必须配合他们。你怨不得谁,要怨就怨自己当初使用这项技术时没有长远考虑,如果当初用div来做就没这问题了。但谁也无法保证,将来IE8,IE9连div也不支持了。

作为客户,他们并不能知道了显示地址栏就稍微安全点了,应该说,大多数客户都是普通的网民,他们无法判断哪些地址是不安全的。那位说看见没地址的模式窗口的网页都不敢点,那是因为你是程序员,你已经有了很高的安全警惕性。他们为什么要换IE7可能他们也不知道,也许是因为到那时大家都换IE7了所以他们也用。就象几年前大家都用win98,而现在大家都用xp一样。确切的说,是微软在引导客户,微软甚至有把不标准变为标准的能力。要是微软不推出xp或许现在还很多人在用win98,微软的IE7要是不这么改,到那时大家照样还是会用的。当一种东西已成为普遍,便不再有对错。但谁无法保证,将来网民的安全意识普遍提高了,都能识别不安全地址了。所以说,微软这么改,作用是有的,但是恐怕要等几十年后才能体现出来。

客观的来看这个问题。现在假设我们不是程序员也不是客户。微软这么改是不对的。微软企图利用这个修改来提高IE的安全性,但实际上这么改,现在来说对于安全性根本没多大提高。然而,由于不再向下兼容性,使得之前开发的程序都得重新修改,以后开发程序也不能再这么做了,大大增加了程序开发的难度和开发周期。但客户却不会因此而多给开发者更多的钱。

前面有位举了驴和马的例子。这里我反驳一下,楼主为什么要抱怨微软?我前面已经说了,是微软在引导客户。微软改不改,客户都会用。游客们为什么要改租马呢?那是因为那位出租驴的商人突然改出租马了,而不再出租驴了,并且宣称骑马游玩更安全。而游客们租不到驴了只好租马,并且心理上享受着这个“更安全”的马。然而,到底安不安全还是得靠自己的骑术。而你之前为驴做的一切东西,一下子全部都没用了得重新做,你能不抱怨那个出租商吗?

我认为,很多被不良者利用的技术就象是一把刀,既可以用来切菜,也可以用来杀人。也许我们会觉得法律因此而禁止买卖菜刀很可笑,然而微软却这么做了。法律为什么不禁止买卖菜刀?因为法律可以给使用菜刀杀了人的罪犯判罪,让罪犯做了坏事后接受应有的惩罚。然而,微软却不会也无法将那些制作病毒网页的人一网打尽,就算是法律或国家现在也没办法。就好比,现在你可以拿着家里的菜刀随便到路上去砍人,却没人能抓得到你,你说这样的社会能安全吗?所以,微软件只有禁止“买卖菜刀”了。没菜刀了怎么切菜?自己想其他办法去。

其实,微软如果选择这么做或许才是最佳做法。IE不是有信任站点吗?你的B/S程序不是一个web地址吗?假如,默认的设置是显示地址栏的,但是,如果把B/S服务器的地址设置为信任站点了,那么就允许使用一切“菜刀”。这样的话,客户如果平时浏览网页,什么弹窗,什么模式窗口,什么iframe,什么网页木马……全都不见了。而他们要用来工作的那个b/s地址,便什么都支持了,功能齐全又很安全(web服务器被黑程序被人挂马了这种情况这里就不讨论了)。

政府抓不到拿菜刀杀人的罪犯却只有禁止买卖菜刀,但是还可以政府自己组建专门的切菜场所啊,让大家自己把菜拿过来到这里切,切完了拿回去,菜刀不能带走,就不会被不良者利用了,不是吗?
2007-01-20 05:27 | rym1020 [未注册用户]

#42楼    回复  引用    

UMU 认为兼容性在适当的时候要去掉,就要霸道,谁让您用垃圾了??
2007-05-15 20:01 | UMU [未注册用户]

#43楼    回复  引用    

@rym1020

你的评论太长了,看完后感觉更离题。

驴马的例子是说你用一个Internet explorer做了不太合适的事并且为此你还参与做了辅助性的工作。

真正骑马游览的客户是不需要为马定做什么东西的。只有用马去磨面的客户还需要为马定做点什么,比如一个套子。而这马本来是用来骑乘的。为什么要怪那个出租商人?

不过我也讨厌那个IE7的地址栏,的确不美观,我觉得说服客户将应用地址加入受信站点没什么难得,我就是这么做的,客户为了好用什么都干得出来。
2007-07-27 16:23 | bsc2xp [未注册用户]

#44楼    回复  引用    

我以前用IE7时,有看见过弹出窗口没这地址栏,
2007-08-13 17:26 | 黄生 [未注册用户]

#45楼    回复  引用    

有沒有什么辦法在js或html里設置呀?讓地址欄隱藏。
2007-11-13 20:46 | fanhouchu [未注册用户]

#46楼    回复  引用    

--引用--------------------------------------------------
adam[匿名]: 如果你不想看到这样的效果,请说服你的客户将你们的网站地址设为trusted不就行了吗。世界上数以亿计的人们使用ie,并希望看到那些弹出窗口到底从哪里来的,新功能满足了他们的需要,我觉得你的论调才真的幼稚。
--------------------------------------------------------

我们程序员看到这样的东西都感觉“讨厌”!
说服客户?怎样?
告诉他这是IE的安全考虑?希望你能遇到这样好说话的客户!!
2007-12-21 15:58 | 路过! [未注册用户]

#47楼    回复  引用    

ie7 哪个地址栏怎么去掉???
2008-03-19 17:02 | *** [未注册用户]