知识大全 精通ASP.NET中弹出窗口技术
Posted 知
篇首语:关山初度尘未洗,策马扬鞭再奋蹄!本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 精通ASP.NET中弹出窗口技术相关的知识,希望对你有一定的参考价值。
精通ASP.NET中弹出窗口技术 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
作为Microsoft的最新建立动态Web网站的工具 ASP NET相对于ASP和JSP在改变原始的Web编程方式方面有了长足的长进 它的代码与页面分离技术(CodeBehind)以及完善的Web服务器控件为程序员提供了一个更加符合传统编程的Web服务器端开发方式 但Web编程还是有着与传统编程不相同的特点 这些特点决定了ASP NET编程中必须以一些特殊的技巧来完成程序要求 弹出窗口正是这类编程方式的代表 相当多的编程书籍对弹出窗口采取缄默或者一语带过 似乎看不过弹出窗口的巨大使用天地 本文将为你解开弹出窗口使用中的大多数问题 为了提高网站的访问的并发度和吞吐量 与其它服务器脚本一样 ASP NET同样使用了客户端脚本来减轻服务器的压力 ASP NET到现在( 版)为止并不直接支持弹出窗口 必须通过JavaScript(或VBScript)来使用客户端弹出窗口 一 警告窗口与在CodeBehind中使用客户端脚本的方式 要在浏览器中弹出一个最简单的警告窗口 可以使用JavaScript语句 window alert( [sMessage]) 其中 sMessage是提示信息 可惜 这样的弹出窗口是只有一个 确定 按钮 只能起到提示作用 如果我们要在删除记录时候弹出一个询问的弹出窗口 此时你需要使用 bConfirmed = nfirm( [sMessage]) 其中 bConfirmed是返回值 sMessage是提示信息 这个弹出窗口有两种选择 确定 或 放弃 其选择的返回值放在bConfirmed中 可供代码作出判断 为了提高代码的可重用性与可读性 应当使JavaScript与Codehind相互溶合 通常有两种方式可以达到这样的效果 ( ) 使用Response Write方法 使用Response Write方法早在ASP时代就已经被支持了 它可以把代码写到客户端 是一种相当方便且直观的方法 以下代码演示了如何使用Response Write方法来显示一个警告信息 Private Sub btAlert_Click(ByVal sender As System Object ByVal e As System EventArgs) Handles btAlert Click 演示Response Write方法和alert窗口 Response Write( ) End Sub ( ) 使用RegisterXXX方法 如果你观察Response Write的生成HTML代码 你会发现Response Write方法生成的代码是写到了HTML代码的最开始 即标签之前 此时 所有的 HTML对象都还没有生成 如果要想使用HTML内的对象 并与之交互 就会出现 找不到对象 的错误 因此 笔者推荐一个更加符合CodeBehind方式的方式 使用RegisterXXX方法 RegisterXXX包括 RegisterClientScriptBlock RegisterStartupScript以及用于判断的IsStartupScriptRegistered函数 RegisterStartupScript 的原型是 Overridable Public Sub RegisterStartupScript( _ ByVal key As String _ ByVal script As String _ ) 其中 key表示这个脚本的唯一标识 script是代表脚本的字符串 RegisterClientScriptBlock的原型与RegisterStartupScript相同 两个函数不同在于将其包含的脚本代码写入到HTML文件的不同位置 RegisterClientScriptBlock在 Page 对象的 元素的开始标记后立即发出客户端脚本 RegisterStartupScript则是在Page 对象的 元素的结束标记之前发出该脚本 如果你的脚本有与页面对象(doucument对象)进行交互的语句(这在我们后面的例子中看到) 则推荐使用RegisterStartupScript 反之如果要想客户端脚本尽可能早的执行 则可以使用RegisterClientScriptBlock或Response Write 为了防止在页面中反复加入脚本 在注册脚本时ReisterStartupScript/RegisterClientScriptBlock使用了key作为注册的Key 然后在程序中可以使用IsClientScriptBlockRegistered作判断 以下例子将使用RegisterClientScriptBlock来演示confirm的使用方法 Private Sub btConfirm_Click(ByVal sender As System Object ByVal e As System EventArgs) Handles btConfirm Click 演示RegisterClientScriptBlock方法和confirm窗口 If (Not IsClientScriptBlockRegistered( clientScript )) Then 判断是否已经加入了该脚本 没有则加入 Dim strScript As String strScript = 注册脚本 RegisterClientScriptBlock( clientScript strScript) 如果选择 否 则继续向下执行 End If End Sub 二 弹出指定页面 光有提示窗口还远远不能满足我们的要求 在程序中 我们常常需要弹出指定页面 此时可以使用JavaScript的window open方法 配合前面的RegisterClientSciptBlock方法 我们就可以实现指定页面的弹出 以下代码展示了如何弹出指定页面: Private Sub btWinOpen_Click(ByVal sender As System Object ByVal e As System EventArgs) Handles btWinOpen Click 使用window open与registerStartupScript简单演示 If (Not IsClientScriptBlockRegistered( OpenScript )) Then 判断是否已经加入了该脚本 没有则加入 Dim strScript As String = RegisterStartupScript( OpenScript strScript) End If End Sub 程序使用Window open方法来弹出新的页面 它只一个参数 新的弹出窗口的URL地址 事实在window open方法有多个参数 但这是javascipt的简单内容 我们将不会在这儿详细分说 如果你有相关的问题 请查询MSDN 这段程序在IE中直接使用一切正常 但如果你正在使用类如GoSurf MyIE NetCapter之类的浏览器 那么 很不幸! 你将看不到弹出窗口 这就是我们将要讨论的弹出窗口过滤问题 三 非标准IE浏览器对弹出窗口的过滤行为讨论 广告窗口的泛滥使得不少网民不堪铺天盖地的广告骚扰纷纷放弃标准IE浏览器而使用诸如GoSurf MyIE NetCapter这样的使用IE内核支持多页面并能自动屏蔽广告的软件 据说在即将发布的IE sp 中微软也将加入封杀广告窗口功能 这对大多数网民当然是件好事 可对于程序员而言 我们使用弹出窗口的方式与一般广告并无本质的不同 这样的窗口也会被弹出窗口管理器不分青红皂白的封杀 其结果当然是我们不愿看到的 有没有一个标准的方式能让窗口正常的弹出呢?这就要求我们了解浏览器封杀广告的原理 通常的广告封杀器使用以下三种方式进行广告过滤 ( ) 基于窗口标题的封杀方式 这种封杀方式的原理是定时检查所有的IE窗口标题 然后于已经有的列表(由程序维护的一个数组列表)来比较 如果有相同的 我们就关闭这个窗口 显然 这种方式有着诸多缺陷 它封杀了所有的弹出的窗口 管得太死 在程序真正使用的很少 不过 依据它进行的变形方式倒使用得相当的普遍 那就是 基于窗口标题名称的智能过滤技术 它根据弹出窗口的标题是否含有关于广告的关键字进行封杀 这为提高过滤效果作出了很好的探索 ( ) 基于窗口类和位置的封杀方式 经过分析发现正常浏览窗口的类名是IEFRAME和CabinetWClass 而广告窗口的类名是CabinetWClass 进一步分析发现 广告窗口的WorkerA类和Shell DocObject View类的rect top的值是相同的 正常IE窗口的WorkerA类和Shell DocObject View类的rect top的值是不相同的 根据以上两点就可以书写广告杀手程序了 事实上 我对此程序的通用性持怀疑态度 因为笔者用Spy++分析发现 在Windows ( 笔者使用的操作系统)中 IE窗口的类都为IEFrame 同时 由于Win 是一个基于Unicode代码的操作系统 所以没有WorkerA类 而以WorkerW类取而代之 同时 也不存在rect top不相同的情况 由于笔者没有WindowsXP操作系统 所以不能针对WindowsXP作进一步的试验 ( ) 基于IE 组件的封杀方式 以上两种方式都是把IE窗口当作一个普通的Windows窗口对待 进行判断的 事实上 IE是一个典型的基于组件的浏览器 所有的基于IE内核的浏览器都是包装shdocvw dll文件 然后书写相应的BHO代码 只有这样才能做到真正的控制IE浏览器 而不是方法一 二这样的隔靴搔痒 还有一种基于IE内核的弹出窗口封杀方法 它可以在弹出窗口打开之前加以拦截 其原理是 每当IE打开一个新的窗口时候都会触发NewWindow事件 执行OnNewWindow ([out] IDispatch* [out] BOOL *bCancel)方法 重载此方法 判断打开新窗口事件是否发生在浏览页面已经下载完毕之后 如果是 说明是正常的弹出窗口 反之加以拦截 由于Gosurf这样的浏览器本身就重载了Shocvm dll组件 所以使用第三种方法就自然成了顺理成章的事 然而在使用过程中有时也会发现 广告过滤不很完美 但原理基本如此 cha138/Article/program/net/201311/12987相关参考
ASP.NET之精通客户端弹出窗口 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 作为Micro
ASP.NET让网页弹出窗口不再困难 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 由于项目要用
知识大全 ASP.NET入门教程 1.7.8 属性窗口[2]
ASP.NET入门教程1.7.8属性窗口[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb
知识大全 ASP.NET入门教程 1.7.8 属性窗口[1]
ASP.NET入门教程1.7.8属性窗口[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb
知识大全 ASP.NET入门教程 1.7.9 错误列表窗口[2]
ASP.NET入门教程1.7.9错误列表窗口[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&
知识大全 ASP.NET入门教程 1.7.9 错误列表窗口[3]
ASP.NET入门教程1.7.9错误列表窗口[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&
知识大全 ASP.NET入门教程 1.7.9 错误列表窗口[1]
ASP.NET入门教程1.7.9错误列表窗口[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&
.NET中弹出对话框的方法汇总 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!下面是本人对常用对话框
哪种情况中弹簧测力计能测出物体真实重量这个东西测的不是重量,而是重力。重力是会随地点的改变而改变的。比如南极的是9.833,而赤道是9.7几的。所以都是正确的,比较准确的值在弹簧测力计下挂一实心物体,
ASP.NET弹出一个对话框 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!