Foxtable(狐表)用户栏目专家坐堂 → 如何判断网页加载完毕?


  共有2451人关注过本帖树形打印复制链接

主题:如何判断网页加载完毕?

帅哥哟,离线,有人找我吗?
shanshuizhujian
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:221 积分:2195 威望:0 精华:0 注册:2011/12/14 9:56:00
如何判断网页加载完毕?  发帖心情 Post By:2020/3/19 12:19:00 [只看该作者]

Dim WebBrowser1 As WinForm.WebBrowser
WebBrowser1 =  e.Form.CreateControl("WebBrowser1", ControlTypeEnum.WebBrowser)
WebBrowser1.Dock = System.Windows.Forms.DockStyle.Fill
Dim webBrowser As Object = WebBrowser1.basecontrol
webBrowser.Url = new System.Uri(ProjectPath & "kindeditor\index.html", System.UriKind.Absolute)
s="nihao"
'msgbox(s)//这里不添加显示框,下面的一句代码就不起作用。为什么?
WebBrowser.Document.InvokeScript("setcontent", New String() {s})


我在网上找了一个判断网页加载完毕的代码,但不知道如何改写。
  1. Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object,URL As Variant)  
  2.    If (pDisp Is WebBrowser1.Object) Then  
  3.       Debug.Print "Web document is finished downloading"  
  4.    End If  
  5. End Sub  

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106645 积分:542402 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/19 13:37:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
shanshuizhujian
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:221 积分:2195 威望:0 精华:0 注册:2011/12/14 9:56:00
回复:(有点蓝)参考:http://www.foxtable.com/bbs/...  发帖心情 Post By:2020/3/19 15:38:00 [只看该作者]

还是不行,是不是我问的方向不对,我是想在网页加载后,用窗体命令执行网页里的一个js函数。
这句把网页编辑器加载后
web.Url = new System.Uri(ProjectPath & "kindeditor\index.html", System.UriKind.Absolute)
'msgbox("hh")
s="nihao"
'msgbox(s)
执行下面这句话,把需要编辑的内容也加载进来。
web.Document.InvokeScript("setcontent", New String() {s})

现在的情况是,我不写msgbox这个对话框,下面的数据加载不进来,主要写上这一句,下面的这句话就可以加载进来数据。不写加载不进来。按照你给的地址我写了个判断函数,判断也是加载完毕了,但是还是不执行下面的函数。

vb.net里也不行
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        WebBrowser1.AllowWebBrowserDrop = False
        WebBrowser1.IsWebBrowserContextMenuEnabled = False
        WebBrowser1.WebBrowserShortcutsEnabled = False
        WebBrowser1.ObjectForScripting = Me
        WebBrowser1.Navigate("C:\Users\lenovo\source\repos\编辑器\index.html")
        Dim s As String = "hello"
        WebBrowser1.Document.InvokeScript("setcontent", New String() {s})//这句话是不起作用的。
    End Sub
[此贴子已经被作者于2020/3/19 15:42:29编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106645 积分:542402 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/19 15:46:00 [只看该作者]

如果使用浏览器控件,需要看到网页的,请参考2楼第一个链接的实例,需要在全局代码添加一个事件,然后浏览器控件绑定到这个事件。然后其它操作都需要到全局代码里处理。

如果不需要看到网页的,参考第二个链接的用法
Dim web As New System.Windows.Forms.WebBrowser()
web.ScriptErrorsSuppressed = True
web.Navigate(ProjectPath & "kindeditor\index.html")
Do Until web.ReadyState = 4 '等待网页加载完毕
    Application.DoEvents
Loop
web.Document.InvokeScript("setcontent", New String() {s})

 回到顶部
帅哥哟,离线,有人找我吗?
shanshuizhujian
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:221 积分:2195 威望:0 精华:0 注册:2011/12/14 9:56:00
回复:(有点蓝)如果使用浏览器控件,需要看到网页的...  发帖心情 Post By:2020/3/19 16:02:00 [只看该作者]

"然后其它操作都需要到全局代码里处理。"
这句话很关键,我没有把处理代码写到全局里,我尝试一下,谢谢这么迅速回答。

 回到顶部