老是等不上wwWzqvb的vb.net 页面刷新了,不能显示zqvbcOm了怎么办

VB操作网页代码
我的图书馆
VB操作网页代码
1、&防止新窗口里头打开网页代码1:Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)Dim frm As Form1Set frm = New Form1frm.Visible = TrueSet ppDisp = frm.WebBrowser1.objectEnd Sub
代码2:有这段代码, 有许多网页会出错,经常提示脚本错误,可以用silent属性为True来屏蔽,不过也有些不足!!!Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)Cancel = TrueWebBrowser1.Navigate2 WebBrowser1.Document.activeElement.hrefEnd Sub
Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)On Error Resume NextDim frmWB As Form1Set frmWB = New Form1frmWB.WebBrowser1.RegisterAsBrowser = TrueSet ppDisp = frmWB.WebBrowser1.objectfrmWB.Visible = TruefrmWB.Top = Form1.TopfrmWB.Left = Form1.LeftfrmWB.Width = Form1.WidthfrmWB.Height = Form1.HeightEnd Sub
功能差不多,任选一个。
2、&去掉滚动条
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)WebBrowser1.Document.Body.Scroll = "no"End Sub实际上上面的效果不咋地,如果懂得HTML知识, 你可以在读取网页的时候,读取HTML源码, 查找替换, 再写入只需在 &body&&& &/body& 之间插入代码: &body&& style= "overflow-x:overflow-y:hidden "& 即可。其中x表示水平滚动条,将其改为y的话就可以隐藏垂直滚动条。当然也有其他方法, 比如修改网页的尺寸呀? 有的时候部分元素的居中改为左对齐也能有效果将WebBrower放在PictureBox控件中,用PictureBox的边框挡住WebBrower的边框。例如,将WebBrowser1放大点,将PictureBox变小点...PictureBox的appearance设置为0-flat,呵呵,OK~~
3、&禁止鼠标右键
Private Function M_Dom_oncontextmenu() As BooleanWebbrowser1.Document.oncontextmenu = FalseEnd Function'引用Microsoft HTML OBject Library
Dim WithEvents M_Dom As MSHTML.HTMLDocumentPrivate Function M_Dom_oncontextmenu() As BooleanM_Dom_oncontextmenu = FalseEnd Function
Private Sub Webbrowser1_DownloadComplete()Set M_Dom = Webbrowser1.DocumentEnd Sub
4、&如何获得网页的内容先给个例子:innerHTML:设置或获取位于对象起始和结束标签内的 HTML
测试一下:
&div id="d" style="background-color:#ff9966"&这是一个层&/div&&input type="button" value="获取innerHTML" onclick="getinnerHTML()"&&input type="button" value="设置innerHTML" onclick="setinnerHTML()"&&script language="javascript"&function getinnerHTML(){alert(document.getElementById("d").innerHTML)}function setinnerHTML(){document.getElementById("d").innerHTML="&div id='d' style='background-color:#449966'&这是一个层,嘿嘿&/div&"}&/script&
5、&多框架框架页面访问'下面两句可以访问到多框架内容'.Document.ParentWindow.Frames.Length'.Document.ParentWindow.Frames(1).Document.all.tags("a")
&&'等待多框架网页全部加载完毕, 否则出错&&&&&&& While .Busy Or .ReadyState && 4 Or .Document.ParentWindow.Frames.Length = 0& &&&&&&&&&&& DoEvents&&&&&&& Wend
6、&获得浏览器信息
Private Sub Command1_Click() WebBrowser1.Navigate "" End Sub Private Sub Command2_Click() Dim oWindow Dim oNav Set oWindow = WebBrowser1.Document.parentWindow Set oNav = oWindow.navigator Debug.Print oNav.userAgent Set oWindow = Nothing Set oNav = Nothing End Sub
7、&弹出Webbrowser消息窗口
Dim oWindowSet oWindow = WebBrowser1.Document.parentWindowoWindow.confirm "abcd"
VB调用webbrowser技巧集2
8、&向Webbrowser中写入HTML内容的几种方法
向Webbrowser中写入HTML内容的几种方法
首先在Form_Load中加入
WebBrowser1.Navigate "about:blank"
确保Webbrowser1可用
Dim s As StringDim stream As IStream
s = ""s = s + ""s = s + ""s = s + "
hello world
"s = s + ""s = s + "WebBrowser1.Document.Write s
Set o = WebBrowser1.Document.selection.createrangeDebug.Print oIf (Not o Is Nothing) Theno.pasteHTML "哈哈"Set o = NothingEnd If
'插入文本框Dim o
Set o = WebBrowser1.Document.selection.createrange
o.execCommand "InsertTextArea", False, "xxx"
9、&控制页面滚动WebBrowser1.Document.parentwindow.scrollby 0, 30
10、&判断页面是否可以前进后退
Private Sub Command1_Click()WebBrowser1.GoForwardEnd Sub
Private Sub Command2_Click()WebBrowser1.GoBackEnd Sub
Private Sub Form_Load()WebBrowser1.Navigate ""End Sub
Private Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)If (Command = CSC_NAVIGATEBACK) ThenCommand2.Enabled = EnableEnd IfIf (Command = CSC_NAVIGATEFORWARD) ThenCommand1.Enabled = EnableEnd IfEnd Sub
11、&如何获得网页中被选中部分的HTML
Private Sub Command1_Click()Dim objSelectionDim objTxtRange
Set objSelection = WebBrowser1.Document.selectionIf Not (objSelection Is Nothing) ThenSet objTxtRange = objSelection.createRangeIf Not (objTxtRange Is Nothing) ThenDebug.Print objTxtRange.htmlText
Set objTxtRange = NothingEnd IfSet objSelection = NothingEnd IfEnd Sub
12、&Navigate的参数调用请问:在WebBrwoser控件里提供的Navigate或者Navigate2方法中提供了传递数据
的参数,调用方式为:WebBrowser1.Navigate2(URL,[Flags],
[TargetFrameName],[PostData],[Headers])其中PostData参数就是一个提交参数字符串,例如"name=aaa&password=123",
但问题是为什么这个方法并不是有效的,服务器端不能取得数据?如果这个方法是有效的话就不需要用一段html代码模拟这种调用了。
下面代码能检测出程序post出去的消息
Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)MsgBox PostDataEnd Sub
13、&WebBrowser的方法、属性、事件
WebBrowser的8个方法和13个属性,以及它们的功能:
方法 说明 GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项
 GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进一项 GoHome 相当于IE的“主页”按钮,连接用户默认的主页 GoSearch 相当于IE的“搜索”按钮,连接用户默认的搜索页面 Navigate 连接到指定的URL Refresh 刷新当前页面 Refresh2 同上,只是可以指定刷新级别,所指定的刷新级别的值来自RefreshConstants枚举表,该表定义在ExDisp.h中,可以指定的不同值如下:REFRESH_NORMAL 执行简单的刷新,不将HTTP pragma: no-cache头发送给服务器REFRESH_IFEXPIRED 只有在网页过期后才进行简单的刷新REFRESH_CONTINUE 仅作内部使用。在MSDN里写着DO NOT USE! 请勿使用REFRESH_COMPLETELY 将包含pragma: no-cache头的请求发送到服务器
 Stop 相当于IE的“停止”按钮,停止当前页面及其内容的载入
属性 说明 Application 如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDispatch)。如果在宿主对象中自动化对象无效,这个程序将返回WebBrowser控件的自动化对象 Parent 返回WebBrowser控件的父自动化对象,通常是一个容器,例如是宿主或IE窗口 Container 返回WebBrowser控件容器的自动化对象。通常该值与Parent属性返回的值相同 Document 为活动的文档返回自动化对象。如果HTML当前正被显示在WebBrowser中,则Document属性提供对DHTML Object Model的访问途径 TopLevelContainer 返回一个Boolean值,表明IE是否是WebBrowser控件顶层容器,是就返回true
 Type 返回已被WebBrowser控件加载的对象的类型。例如:如果加载.doc文件,就会返回Microsoft Word Document Left 返回或设置WebBrowser控件窗口的内部左边与容器窗口左边的距离 Top 返回或设置WebBrowser控件窗口的内部左边与容器窗口顶边的距离 Width 返回或设置WebBrowser窗口的宽度,以像素为单位 Height 返回或设置WebBrowser窗口的高度,以像素为单位 LocationName 返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源是网页就是网页的标题;如果是文件或文件夹,就是文件或文件夹的名称 LocationURL 返回WebBrowser当前正在显示的资源的URL Busy 返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回true就可以使用stop方法来撤销正在执行的访问操作
事件 说明Private Events DescriptionBeforeNavigate2 导航发生前激发,刷新时不激发CommandStateChange 当命令的激活状态改变时激发。它表明何时激活或关闭Back和Forward菜单项或按钮DocumentComplete 当整个文档完成是激发,刷新页面不激发DownloadBegin 当某项下载操作已经开始后激发,刷新也可激发此事件DownloadComplete 当某项下载操作已经完成后激发,刷新也可激发此事件NavigateComplete2 导航完成后激发,刷新时不激发NewWindow2 在创建新窗口以前激发OnFullScreen 当FullScreen属性改变时激发。该事件采用VARIENT_BOOL的一个输入参数来指示IE是全屏显示方式(VARIENT_TRUE)还是普通显示方式(VARIENT_FALSE)OnMenuBar 改变MenuBar的属性时激发,标示参数是VARIENT_BOOL类型的。VARIANT_TRUE是可见,VARIANT_ FALSE是隐藏OnQuit 无论是用户关闭浏览器还是开发者调用Quit方法,当IE退出时就会激发OnStatusBar 与OnMenuBar调用方法相同,标示状态栏是否可见。OnToolBar 调用方法同上,标示工具栏是否可见。OnVisible 控制窗口的可见或隐藏,也使用一个VARIENT_BOOL类型的参数StatusTextChange 如果要改变状态栏中的文字,这个事件就会被激发,但它并不理会程序是否有状态栏TitleChange Title有效或改变时激发
14、&本地文件收藏夹操作
基本上用 specialfolder(6 ) 就可以得到收藏夹的路径, 然后你可以用dir去循环读入每个目录,然后dir里面的file, file的名字就是你要的收藏的名字, 路径可以自己根据从上面得到的路径去得到.如果你不用dir也可以用vb的dir控件.Private Type SHITEMIDcb As LongabID As ByteEnd Type
Public Type ITEMIDLISTmkid As SHITEMIDEnd TypePublic Function SpecialFolder(ByRef CSIDL As Long) As Stringlocate the favorites folderDim R As LongDim sPath As StringDim IDL As ITEMIDLISTConst NOERROR = 0Const MAX_LENGTH = 260R = SHGetSpecialFolderLocation(MDIMain.hwnd, CSIDL, IDL)If R = NOERROR ThensPath = Space$(MAX_LENGTH)R = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath)If R ThenSpecialFolder = Left$(sPath, InStr(sPath, vbNullChar) - 1)End IfEnd IfEnd Function
15、&让Webbrowser全屏是的,webbrowser本生是一个控件, 你要它全屏,就是要它所在的窗体全屏, 可以用setwindowlong取消窗体的 title, 用Call ShowWindow(FindWindow(Shell_traywnd, ), 0) 隐藏tray,就是下边那个包含开始那一行. 用Call ShowWindow(FindWindow(Shell_traywnd, ), 9) 恢复. 够详细了吧.
然后在form1.windowstate = 2 就可以了.
16、&选择网页上的内容Private Sub Command1_Click()请先选中一些内容Me.WebBrowser1.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULTMsgBox Clipboard.GetTextEnd Sub
17、&用IE来下载文件Private Declare Function DoFileDownload Lib shdocvw.dll (ByVal lpszFile As String) As Long
Private Sub Command1_Click()
Dim sDownload As String
sDownload = StrConv(Text1.Text, vbUnicode)Call DoFileDownload(sDownload)
保存webbrowser中的HTML内容Dim oPF As IPersistFileSet oPF = WebBrowser1.DocumentoPF.Save "TheFileNameHere.htm", False
WebBrowser1.ExecWB怎么用
下面是我测试的参数WB.ExecWB(4,1)
4,1 保存网页4,2 保存网页(可以重新命名)6,1 直接打印6,2 直接打印7,1 打印预览7,2 打印预览8,1 选择参数8,2 选择参数10,1 查看页面属性10,2 查看页面属性17,1 全选17,2 全选22,1 重新载入当前页22,2 重新载入当前页
18、&Webbrowser确定窗口对话框某些网页出于各种考虑会弹出对话框要求信息确认,往往会中断我们的webbrowser过程,可以使用如下方法:1.加入Microsoft Html Object2.加入语句
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)Dim obj As HTMLDocumentSet obj = pDisp.Documentobj.parentWindow.execScript "function showModalDialog(){}" '对showModalDialog引起的对话框进行确定End Sub而confirm引发的对话确定框可用confirm替换showModalDialog即可,Alert等同理~
WebBrowser取得网页源码Private Sub Command1_Click()WebBrowser1.Navigate ""End Sub
Private Sub WebBrowser1_DownloadComplete()'页面下载完毕Dim doc, objhtmlSet doc = WebBrowser1.Document
Set objhtml = doc.body.createtextrange()If Not IsNull(objhtml) ThenText1.Text = objhtml.htmltextEnd If
19、&取得源码调试正常运行错误我用WebBrowser取得网页源码,直接运行正常,但在编译后出错
提示:实时错误“91” Object 变量或 with 块变量没有设置可能是没有下载完所致,
Private Sub WebBrowser1_DownloadComplete()if webbrowser.busy=false thenDim doc, objhtmlSet doc = WebBrowser1.Document
Set objhtml = doc.body.createtextrange()If Not IsNull(objhtml) ThenText1.Text = objhtml.htmltextEnd Ifend ifEnd Sub20、&页面元素操作1.根据标记名(tagname)的和元素名name来找到元素, 2.给元素赋值或是执行相关的事件.
例0: 查看网页元素& dim a & for each a in wbr.document.all&&&&& text1.text=text1.text & typename(a) & vbcrlf& next
例1: 给username文本框内填充内容: Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) Dim doc Dim tg Set doc = WebBrowser1.Document For i = 0 To doc.All.length - 1 If (LCase(doc.All(i).tagname)) = "input" Then if (LCase(doc.All(i).name)) = "username" then Set tg = doc.All(i) tg.value=text1.text end if End If Next i End Sub&
例2: 找到提交按钮并点击& Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) Dim doc Dim tg Set doc = WebBrowser1.Document For i = 0 To doc.All.length - 1 If (LCase(doc.All(i).tagname)) = "input" Then if (LCase(doc.All(i).type)) = "submit" then Set tg = doc.All(i) tg.click end if End If Next i End Sub
上面在MSDN2找到个答案还没试.IFRAME内的网页的方法不同,可能要用到窗口.试验后再说吧.
例3: 难度的INPUT onclick="this.disabled=this.value='登录中……请稍候……';document.form1.submit();" type=submit value=" 登 录 "
For i = 0 To vDoc.All.length - 1 用 i 来判断submit 为第几个,再点击它
例4: 模拟鼠标点击来点击按钮Private Declare Function GetMessageExtraInfo Lib "user32" () As LongPrivate Declare Sub mouse_event Lib "user32" _&&&&&&&&&&&&&&& (ByVal dwFlags As Long, _&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ByVal dx As Long, _&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ByVal dy As Long, _&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ByVal cButtons As Long, _&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ByVal dwExtraInfo As Long)Private Const MOUSEEVENTF_LEFTDOWN As Long = &H2Private Const MOUSEEVENTF_LEFTUP As Long = &H4sub clk()'至于按钮的坐标值就是x,y,这个你得自己找了,因为窗口放在不同的位置,坐标是不一样的,你可以用getcursorpos取得,'不过,就算你点了,又有什么用呢?点完了还是要验证码的!mouse_event MOUSEEVENTF_LEFTDOWN, x, y, 0, GetMessageExtraInfomouse_event MOUSEEVENTF_LEFTUP, x, y, 0, GetMessageExtraInfoend sub21、&网页按钮的终极控制'一般来说,最简单最直接的操作网页表单提交方法就是WebBrowser1.Document.All("Namd").Value="xxxx"&&&&&&& '填表WebBrowser1.Document.All("DengLu").Click&&&&&&& '按钮点击'不过此方法需要知道该表单的各个元素的ID.一般来说,普通的网页都能直接从网页源文件中找到这些东西.'假如整个表单都没能在源文件中找到的,那可以用&&& Text1 = WebBrowser1.Document.getElementById("BiaoID").innerHTML&&&&&&& '"BiaoID"为表单所在表格的ID'这样Text1显示出来的就是你所要的表单的代码了.'不过即使是得到隐藏的代码了,还是有可能碰到没ID没NAME没类型的按钮,这怎么办呢?'不怕,通用方法来了.'没ID我们就给它个ID嘛.'在DocumentComplete里网页完全打开后'处理网页源码,给你要点击的按钮起个名(加上ID)'例如: &&& Text1 = &BUTTON style='PADDING-RIGHT: 2 PADDING-LEFT: 2 PADDING-BOTTOM: 2 MARGIN-LEFT: 3 LINE-HEIGHT: 100%; PADDING-TOP: 2 HEIGHT: 20px' onclick=javascript:btnSeedFetcherClick.call(this)&确定&/BUTTON&'将其变为:&&& Text1 = &BUTTON& ID=abc style='PADDING-RIGHT: 2 PADDING-LEFT: 2 PADDING-BOTTOM: 2 MARGIN-LEFT: 3 LINE-HEIGHT: 100%; PADDING-TOP: 2 HEIGHT: 20px' onclick=javascript:btnSeedFetcherClick.call(this)&确定&/BUTTON&'然后用&&& WebBrowser1.Document.body.innerHTML = Text1.Text&&&&&&& '将处理完的网页装入WebBrowser1'然后就可以用回一开始说的最简单的方法来点击了&&& WebBrowser1.Document.All("abc").Click&&&&&&& '按钮点击'怎么样,是不是很爽丫,这样就不用去思考还有没什么条件可以来定位这个按钮然后再点击了.'当然,还有中方法是:&&& Dim OButton&&& OButton = WebB.Document.getElementsByTagName("BUTTON")&&& OButton.Click&&&&&& '这样就点击了前边例子中的那个按钮了.'这方法通用性也是很强,自己研磨一下你就能运用自如了.
22、执行网页中的脚本Function js(scripts)& On Error GoTo 1& If scripts = "" Then Exit FunctionSet document = WebBrowser1.document& document.parentWindow.execScript scripts, "javascript"Exit Function1& MsgBox "运行js脚本时发生错误!"End Function
javascript:function findNode(findString,obj){var findId=var findStrings=findString.split(';');for(var i=0;i&obj.childNodes.i++){findId=if(obj.childNodes.length&0){var objs=findNode(findString,obj.childNodes[i]);if(objs!=null)}for(var k=0;k&findStrings.k++){var temp=findStrings[k].split('=');eval("var temp2=obj.childNodes[i]."+temp[0])if(temp2!=temp[1]){findId=}}if(findId){return obj.childNodes[i];}}}例:&input onclick="window.location.href='resourceissue.jsf';" type="button" value="资源发布" style="cursor:"/&js "findNode('nodeName=INPUT;value=资源发布',document.documentElement).click()"
注:如你打不的不是你的网站页面,可以用VB的JS函数先执行一下我写的这个javascript:findNode函数如:js "function findNode(findString,obj){...."上面findNode函数要去掉换行符,这里是为了直观才加上的换行符
例: &IMG SRC="top.png" WIDTH="21" HEIGHT="18" BORDER="0" ALT=""& js "findNode( 'nodeName=IMG;src=top.',document.documentElement).click() " 例: &a href="top.html"&xxxx&/a& js "findNode( 'nodeName=IMG;src=top.#text=xxxx',document.documentElement).click() "&
我用alert(document.getElementById( "tdGetSeed ").innerHTML); 看了是:&form id=frmgetseed style="...." onsubmit="return false"&&input id=btnGetSeed style="..." onclick=javascript:getSeedClick.call(this); type=image src="...gif"&&/form&
所以用:Set document = WebBrowser1.document& document.getElementById("btnGetSeed").click() 是可以的现在你不用上面那么多代码了,只要一条就行,那就是:document.getElementById("btnGetSeed").click()或Set document = WebBrowser1.document document.parentWindow.execScript "getSeedClick.call(document.getElementById('frmgetseed'))", "javascript "&
TA的最新馆藏[转]&
喜欢该文的人也喜欢在线新华字典
&&&&&&在上面的搜索框内输入条件,点击检索,就可以找到相应汉字的拼音、部首、笔划、注解、出处,也可以通过笔划、部首去检索。一些淘汰不用、电脑输不出的汉字,请通过查找,给孩子起名,请通过进行起名字。
热门搜索:&&&&&&&&&&&&&最新收录:&&&&&&&&
&&&&&&&&&&&&&&
&&&&&&&&&&
汉语实用附录
&&&&&&&&&&&&&&&&&&&&
版权所有 在线汉语字典 新华字典词典 &&浙ICP备号博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)注册 | 登录
研二 零岁pm 欢迎北京互联网公司骚扰
产品经理就业培训班,12周特训,测、练、实战,22位导师全程带班,200+名企内推,保障就业
loading页面的展示方式多种多样,我总结了几点和大家一起探讨交流。
一、类型:
Loading页从逻辑上讲,会有两种分类:一种是先loading再进入、另一种是先进入再loading。两种分类从顺序上看,就是加载数据和进入页面,哪个放在前面。下面我们具体的看一下这两种分类。
先loading再进入
在一个页面中点击一个button或者一个入口时,app会先加载完下一个页面的所有数据之后,再进行跳转操作,下一个页面的所有样式布局、所有的数据,都是在加载完该页面所有的模块之后,才会跳转并显示出来。这里你可能会比较差异,自己平时用的app里面好像很少有这种交互方法。
确实,这样的交互比较少见,我在AppStore排行榜前一百位的应用里面,也没有见到这样的交互方式。平时在移动端能接触到这种交互方式的,应该是我们手机的开机过程,加载完所有模块之后才进入新的页面。这样做的原因在于,新的页面极其重要,为了不影响新页面的体验效果,才会做成先loading再进入。但同时这样做会让用户产生一定的等待焦虑,全部数据加载完,可能会需要很长一段时间,在这段时间里,用户只能在本页面看着转菊花,却不能体验新的功能或者产品。所以这样的交互越来越少见了。
先进入再loading
在一个页面中点击一个button或者一个入口时,app会先进行跳转操作,下一个页面所需要的数据一步一步的加载出来。这样的交互方式比较常见,也比较符合用户的使用行为,用户点一个button,进入新的页面,肯定是迫不及待的想体验新页面的功能或者产品,所以先进入新的页面,再一步一步的加载,也成为了主流的交互方法。
二、方案:
这里讨论的方案,是类型二:先进入再loading的交互方法的实现方案。方案一:先loading再进入的使用情况比较少见,我们就不做讨论了。
下一个页面中全屏被锁定,只显示出转菊花(加载中),在页面没有全部加载完的时候,用户没有任何其他的交互操作的机会(包括返回退出button)。这样的交互方案,实际上是和类型一“先loading再进入”是一个意思,都得是新的页面所有数据加载完之后,用户才可以有交互操作。
全部锁定这样的方案,存在着很大的弊端,当网络环境比较差,处于弱网断网的情况下,或者所需要的加载的数据量庞大,加载的时间可能会很长。但是用户又没有其他的方式改变这样的情况,只能是等待页面全部加载完,或者是杀死进程。
一个新的页面被分为两个部分,一是静态数据部分,在下载apk的时候就已经设置好的,比如说返回退出button等,不随着页面的变动而变动。二是动态数据部分,每次进入新的页面时,app会向服务器请求动态数据部分的数据信息,这时页面中动态数据部分被锁定,显示转菊花,没有被锁定的部分是静态数据部分,方便用户在弱网断网、数据量庞大这些情况发生时,可以选择退出,使用app内的其他功能。
如大众点评的loading方案,在进入一个新的页面时,需要加载的部分是内容部分,顶部的框架是在app唤醒时就已经加载好的,不随着每个新的页面变化而发生改变。方便用户在弱网断网、数据量庞大的情况下做出相应的改变。
局部loading
在一个新的页面被加载时,首先会向服务器发送请求参数,看看回调参数与上一次打开该应用时的回调参数是否一致,若是一致,向本地缓存调用参数,查看一下本地是否有该页面的缓存,部分模块可能存在于缓存之中,如果有,则先展示出来缓存的内容,让页面上先有一些内容供用户浏览。每当加载完一个模块的数据之后,显示出来一个模块的内容,没加载出来的显示转菊花。
这是现网上比较常用的一个方法,比如微信用的就是这种交互的方法,我把网断掉,模拟弱网断网的环境,由于彩票不在微信钱包的第一屏,故之前没有加载到缓存中,数据从服务器返回到app之前,首先加载出来缓存中的数据,缓存中没有的数据,用系统的空白来代替。
默认样式填充
在等待回调的数据时,为了在页面不显示空的值,一般都会显示转菊花,来告知用户该页面处于加载中,有些APP在转菊花的部分,显示的是app的logo图,并且配上一定的文案说明,如上图的映兔视频。样式统一并且传递的风格也是一致的。让用户对APP有一致的印象,给用户留下好感。
Loading页,会有很多值得关注的细节问题,我根据我见过的loading页面,总结出来下面三条,最后一点是我根据自己的痛点做出的设想。
直观的反映出数据加载的进度,能有效的减轻用户等待的焦虑。我们最常见的进度条,可能就是微信的公众号文章了。进度条主体颜色为绿色,和微信logo的颜色相同,且在白色的背景衬托下显得明亮突出。由于公众号文章可能存在较多图片或者视频音频,所以加载的时间长短不一,进度条的存在恰好的反映了加载的进度,减轻了用户等待的焦虑。
这种交互常见于手游,由于手游的规则逻辑都极其复杂,用户很难会认真的读完用户手册或者帮助说明之后再去玩游戏。用户肯定是想在第一时间跳过那些 复杂的规则,先玩儿上一局爽爽再说。这时在loading页加入一些技巧分享,可以免去用户很多的操作失误,并且可以为用户带来直观的利益。
在用户等待游戏加载时,可以显示一些APP操作技巧,比如说国粹手游欢乐麻将,在我每次等待游戏进入的时候,都会提示不同的友情提示,麻将的玩法套路众多,很适合于这样的技巧分享。
虽然所有的页面加载都可以归结为一个词:loading。但是这其中处理的流程、加载的数据、等待的时间却都有所差距。加载页的存在,不仅要让用户知道在加载数据,更要让用户知道在加载什么数据,如果等待时间很长的话,要告知用户,等待的时间大概是多长。让用户心里有个准备。
比如说大型一点的手游,用户遇到的问题就会五花八门,在移动网络下会不会消耗太多流量,在游戏加载时,等待时间会不会很长,等等…所以在页面加载时会有很多类型的文案,“此过程不会消耗流量”,“正在更新资源”…APP会各种各样的手段减轻用户的焦虑状态。比如腾讯出的这款魂斗罗,在下载新的资源时,会文案提示“正在更新资源”,同时在进度条附近显示出加载的总数据量,及加载速度。为的就是怕用户在如此漫长的等待过程中,因焦躁情绪而退出游戏。
顺着魂斗罗加载数据这个情况接着说,我依然会出现焦躁的情绪,实际上我除了等之外,没有任何可以进行交互的地方。我想这也是大型手游玩家共同存在的一个痛点。我们粗算一下,总数据量300MB,加载速度0.25MB/s,需要的时间大约是20分钟。就算把网速提高到2MB/s,那也得需要两分半钟。
这么长的等待时间,我只能瞪眼看着没有变化的屏幕,哪怕来点广告,也是新鲜幸福的事情吧。广告算是这种长等待时间的一种简单粗暴的解决方案,既可以实现快速变现,又可以免去用户等待时的无聊情绪。
还有一种是我的设想,我们可以根据APP的本质类型,做出来一种小游戏,比如说魂斗罗这个手游,在长等待时间,可以展示出来,不用的枪械打出来的火焰效果。就类似于冒着蓝火哒哒响的加特林。
Loading页面的样式千变万化,我从体验过的loading页面中,总结出来两大类型,针对于先进入再loading类型,又给出了四种解决方案。又加入了四点自己发现的细节。其实最终落地的loading页面,不只是这四种方案中的一种,可能是一种或者多种的结合,需要产品的同学们根据自己的APP情况,具体的去解决。但是万变不离其宗,loading页最初的设计原因就是让用户在等待的时候不那么无聊,不那么焦虑。本着原则出发,会有更多好的方案设计出来,更多耐人寻味的细节被考虑到。
作者:Mitsuizq,微信公众号:Mitsuizq
本文由 @Mitsuizq 原创发布于人人都是产品经理。未经许可,禁止转载。
赞赏是对原创者的最大认可
赞赏5人打赏
收藏已收藏 | 40赞已赞 | 10
研二 零岁pm 欢迎北京互联网公司骚扰
产品经理群
运营交流群
数据分析群
文案交流群
Axure交流群
关注微信公众号
大家都在问
14个回答22人关注
19个回答68人关注
20个回答24人关注
16个回答21人关注
10个回答49人关注
95个回答89人关注}

我要回帖

更多关于 vb.net 页面刷新 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信