IE浏览器内核在页面表现上一直不错,这受益于它的覆盖率,但在资源控制上一直表现不佳。
一方面这是由于IE内核自身的内存管理机制并不是十分理想;一方面,各种各样的基于IE内核的插件都可能导致IE内核资源释放不彻底。
TheWorld 30从架构就为内存的释放做了很多优化,尤其在多进程模式和混合模式下,页面处于不同的进程中,得益于多进程的特性,关闭网页时,页面所在进程退出,网页占用的资源会得到彻底释放。因此,在TheWorld 30中,由于网页自身的内存泄露导致浏览器的内存占用不断升高的问题得到根本性的解决。
测试方法:打开大量大型网页,等网站全部加载完毕之后,关闭所有页面。将浏览器此时的内存占用与启动时的内存占用是一致的。
进程模型切换
混合进程模式:
这是TheWorld30的默认模式,也是推荐大家使用的模式。
此模式下,浏览器框架根据打开页面的数量智能创建进程。打开多个页面后的资源占用较少,能较好地解决网页资源泄露的问题,在网页崩溃时也有上佳表现。
从以下示意图,可以看到此种模式下的进程管理,每n个页面使用一个进程,即节省了资源占用,又不会影响到其它进程的页面,而当某个进程中的页面全部关闭的时候,该进程退出,此时进程占用的资源将得到彻底的释放。
单进程模式:
所有网页都在同一个进程中运行。几乎您能遇到的所有IE内核的浏览器都是使用此模式,打开多个页面之后的资源占用较少,但无法解决网页资源泄露的问题,在网页崩溃和假死的时候容易牵连整个浏览器。
建议浏览器运行时间较短的用户、很少使用插件的用户使用。
多进程模式:
每个网页都在单独的进程中运行。打开多个页面后的资源占用较多,但能彻底解决网页资源泄露的问题,在网页出问题的时候互不干扰。
建议机器配置较高的用户使用,以便更好地发挥机器性能。
防浏览器假死
有些网页由于代码编写的问题,或者网站问题,会导致网页在一段时间内失去响应。
IE内核的浏览器在这种情况下,失去响应的网页往往会导致整个浏览器失去响应,而无法 *** 作,要过很久才能恢复,这种情况叫做浏览器假死。
世界之窗30针对这个问题,开发出了防浏览器假死的功能,当网页失去响应时,不再会影响其他页面甚至浏览器的 *** 作,本功能完善中。
如果您要尝鲜,可以在选项页面中选中:防假死模式。
更快的速度
运行速度得到全面提升,充分、合理地利用多核CPU的性能,浏览网页时更加流畅。打开大型网页时,不再害怕浏览器卡住无法 *** 作。 [编辑本段]世界之窗30界面新特性动态窗口
标签的管理实际就是网址的管理,在TheWorld30中支持了20所不具备的多个顶级窗口共存的功能。
您可以将标签拖出标签栏以在新的窗口中显示,也可以将多个窗口中的标签放到一个窗口中。
您可以根据需要管理标签所在位置,随心而动的拖拽组合标签。
配合全新设计的起始页,您可以一次将一组链接恢复到一个窗口中打开。
更多的标签/窗口管理功能敬请期待。
界面调色
界面颜色不再始终如一的单调。现在,你可以根据自己的喜好,让世界之窗使用只属于你自己的颜色。
使用标签分组功能就可以能将同组的标签以相同的颜色显示出来,便于对标签的查看、管理、批量关闭等 *** 作。
个性起始页
全面升级的起始页在保留了之前版本优点的同时,加入了更多实用的功能,强大的自定义支持你打造出独一无二的起始页。
滚动标签栏
滚动的标签栏是世界之窗备受好评的功能之一,标签栏右侧新如入的滑块不仅能用来快速地左右滑动标签,同时还能用来快速了解打开的标签数量、标签栏左侧是否有隐藏的标签等信息。
使用方法:点击滑块上的小箭头,能逐个滚动标签;拖动滑块,则能快速滚动标签。
提示:当鼠标在标签栏上时,直接使用鼠标滚轮,即可滚动标签。 [编辑本段]世界之窗开发团队关于30版本的解答TheWorld 30的界面为什么这么像Chrome?
Google Chrome的推出给了我们很大的震撼!
核心的进步有太多人说过了,比如:提高Javascript的性能,解放Ajax应用的性能束缚,强化互联网标准,推动客户端运算从ActiveX到Ajax的过渡进而将网站从微软标准中拉出来。
这些是IE内核暂时不能比拟的,但要学习它,也不是一个外壳浏览器朝夕可以做到的,这里无需赘言。
从界面上,Chrome至少做了如下努力:
削弱传统标题条的作用,让网站的图标和标题处于更重要的位置,这样可以更好的迎接WebApps,弱化浏览器本身在上网时的地位;
高度精简浏览器界面,Chrome不同于老牌浏览器们,没有承上启下的包袱,精简的界面既提供了简捷的使用感受,也可以在以后追求在各种上网平台下客户端的一致性。
如果说IE8是停在原地,也不恰当,但在产品设计上,Chrome绝对可谓是与时俱进或者说引领潮流了,我们不介意被人说成是模仿或者山寨,30不过是学习了一下别人的长处吧。
TheWorld 30的创新在哪里?
Chrome的最大问题,还是网页兼容性,IE内核仍然凭借所谓事实标准的兼容性保持着旺盛的生命力。
只不过,IE仍然不好用!而各种IE内核的浏览器虽然功能上百花齐放,但在稳定性和内存管理上仍然不尽人意。
所以在内核框架上,我们也有了一些创新的想法,这想法已经体现在你现在看到的30预览版。
IE浏览器的内存消耗总是比较大,而各种插件和防火墙对默认浏览器的监控和扩展又常会导致内存释放的不够彻底,虽然IE8实现了每个标签对应一个浏览器进程来避开这个问题,但在同时开启多个页面的时候,多进程的内存消耗仍然很大,为此我们引入了新的进程模型。
30有三种进程模式可选:
1) 同20一样的单进程模式,只有一个浏览器进程,每个标签在一个独立的线程下。
这种模式即可以降低内核在某些情况下短暂失去响应而导致的整个界面失去响应,又可以降低内存消耗,目前TheWorld20、Maxthon和TT浏览器也都是这么做的。
2) 同IE8一样的多进程模式,UI界面在一个进程,每个标签各自有独立的进程。
这种模式可以最大程度的降低假死,又可以在标签关闭后彻底释放占用的资源,避免长时间浏览后导致的虚拟内存占用大幅增高的现象。
3) 混合模式,这是TheWorld 30独有的,缺省情况下的进程模式。
本模式下,UI界面在一个进程,每n个标签处于同一个进程内,各自有独立的线程。新开启的n - 2n个标签处于另一个新进程内,如此类推。
在混合模式下,你会获得这样的好处,即使长时间的浏览,也不会导致内存占用逐渐增大。同时,一个进程中的标签失去响应,不会牵连到其它进程。
上述是理想情况,30会像20一样,大量收11集用户反馈,定期更新版本,争取尽快达到理想情况。
在30版,我们像开发20一样再次重写了框架代码,这花费了我们很多时间,但一切努力都是值得的,您也会在使用中体会到的,我们相信可以做到 "The Best Shell of IE"。在事件驱动的框架下,不应该考虑到某个dom从而对其进行 *** 作。前面的回答者简单的对你的问题进行了解决。我给你提供一个常规的处理方法。
在你点击提交的时候,会触发提交请求,那么这个时候就应该改变按钮内容,在ajax完成后(无论成功失败),再把按钮内容恢复过来即可。
重要的是要理解事件驱动,而不要总想dom *** 作。position:fixed; top:0px; left:0px; right:0px;height: 40px;
position:fixed;是指定位相对于浏览器窗口, top:0px; left:0px; right:0px,
这样的话,DIV就会固定在页面顶部,宽度等于浏览器窗口的宽度,高度自定义。
让页面加载完执行js有2种方法,js放在文档代码的下方和把语句代码放在windowonload方法里面。
js放在文档代码的下方这是一个最简单的文档结构,引用的javascript文件都放在body的最下方和把语句放在windowonload函数里面,可以让javascript在页面加载完成后执行。
<!doctype html>
<html>
<head>
<title>helloWorld--zxk</title>
</head>
<body>
<div></div>
<script src="xxx"></script>
</body>
</html>
把语句代码放在windowonload函数里面
例如这段代码,虽然script标签没有在最下方,但javascript语句放在了windowonload里面,所以可以在文档加载完成后执行。
<!doctype html>
<html>
<head>
<title>helloWorld--zxk</title>
<script>
windowonload=function(){
alert('页面加载完成!');
}
</script>
</head>
<body>
<div></div>
</body>
</html>
js 页面刷新
让页面进行刷新,可以使用 locationreload() 方法,但是这种方法会让页面一直不断的刷新。
这是因为当页面加载完成以后,我们让它刷新一次,那么浏览器就会重新向服务器请求数据,界面会重新加载,然后,加载完成又调用了locationreload()方法,这样就陷入了死循环,一直处于请求然后刷新的状态。
为了解决这样的问题,我们使用下面这种方式:
利用以上方法,在每次进入这个页面的时候,都会绕过浏览器缓存,重新向服务器获取数据。
我回答问题首先希望帮助到学习C#的后辈。所以先分析原因。
你出现这个错误是因为你没有了解ASPNET的工作原理。ASPNet 和php,jsp ,asp等服务器语言一样 都是为了生成可供浏览器解析的页面,而可供浏览器解析的语言只有HTML。
1,如果你在aspx页面中插入一个asp:LinkButton 那么运行页面后 在浏览器中查看源代码你会发现这个标签实际被转为了一个<a>标签。
2,为什么你的写法不会转换呢?因为首先 传递给Literal1Text 的值在aspnet中作为一段字符串被直接输出到浏览器中。那么你的写法到浏览器后源代码中仍然是一个asp:LinkButton 标签,而这个标签是无法被浏览器正确解析的。
解决办法:
知道了原因,那么如果非要按照你的写法去写,那么应该是这样的:
Literal1Text = "<li>" + ((users)Session["users"])NameToString() + "</li><li> </li><li><a ID='LinkButton1' onclick='LinkButton1_Click1'>注销</a></li><li> </li><li>信息修改</li><li> </li>";
但是当你修改完后发现点击注销按钮依然不能执行!为什么呢?
因为你的LinkButton1_Click1 事件并没有在aspnet中被解析为可供浏览器识别的js代码。
如何解决?
首先吐槽下你的写法实在另类, 但是依然可以实现。
在aspx页面中写一个asp:LinkButton按钮:
<asp:LinkButton ID='LinkButton2' runat='server' onclick='LinkButton1_Click1'>注销</asp:LinkButton>
运行页面,查看源代码 看看这个新加的注销按钮被解析为了什么html代码,大概如下
<a id="LinkButton2" onclick="xxxxx"></a>
将新加的linkbutton 设置不可见属性
<asp:LinkButton ID='LinkButton2' runat='server' visible="false" onclick='LinkButton1_Click1'>注销</asp:LinkButton>
重新修改后台代码
Literal1Text = "<li>" + ((users)Session["users"])NameToString() + "</li><li> </li><li><a ID='LinkButton1' onclick='xxxxx'>注销</a></li><li> </li><li>信息修改</li><li> </li>";
//也就是将标签的js事件绑定到那个隐藏的注销按钮事件上。
希望对你有帮助别费劲了,浏览器的安全机制是不会允许你这么做的,否则就是给流氓软件(不是说你的)开绿灯了,也就是说,当用户主观上想关闭或跳转网页时,网页脚本是不允许在未经用户同意的情况下强行阻止的,所以d框是最基本的 *** 作。这个是html标准中规定的,所有浏览器必须遵守的,除非你有能力自己开发一个浏览器。在平时的编码过程中,当绐浏览器注册一个时间,经常会遇到一些执行次数非常频繁的事件,如scroll,resize等,事件频繁的执行会导致浏览器进行大量的计算而引发页面卡顿假死的情况,为些我们需要通过一些手段来解决这个问题,所以就有了防抖和节流这两个技术。
是指在某段时间内,不管你触发了多少次回调事件,我都只认第一次,并在计时结束时给予响应,至于后面你再触发多少次回调我都不会予以回应。代码实现如下:
与事件节流怡好相反,事件防抖只认最后一次,不管你前面触发了多少次我都不管,我只执行你最后一次触发事件的回调,代码实现如下:
连续的事件,只需触发一次回调的场景有:
间隔一段时间执行一次回调的场景有:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)