VisualFreeBasic控件_mCtrlHtml IE浏览器

2026-1-21 / 0 评论 / 196 阅读

这是对IE浏览器简单封装,主要用来显示一些简单的 HTIM 页面。

显示页面

网页

mCtrlHtml1.GotoUrl("http://www.baidu.com")

本地文件

mCtrlHtml1.GotoUrl("file:///c:/文件.html")

执行页面中的JS函数

   mCtrlHtml1.CallScriptFunc(JS函数名,参数1,参数2,....  可以没参数,也可以最多4个参数,传给JS函数

修改网页中的代码

没有提供任何方法可以设置全部网页,只能根据ID设置部分

   Dim bb As String
   bb = "<html>" & vbCrLf & _
      "   <head>" & vbCrLf & _
      "   <title>网页标题 </title>" & vbCrLf & _
      "   <body id='zzz'>"          & vbCrLf & _
      "    这是一个网页"            & vbCrLf & _
      "   </body>"                  & vbCrLf & _
      "</html>"

   SaveFileStr App.Path          & "1.htm", bb
   mCtrlHtml1.GotoUrl "file:///" & App.Path & "1.htm"
mCtrlHtml1.SetTagContents "zzz","<a href='#2'>设置代码</a>"

全内存网页代码设置方法

上面代码需要通过文件操作,有点不方便,下面是全内存操作

  1. 设置空白网页
    mCtrlHtml1.GotoUrl ("about:<body id=""myContent""></body>")

    会在IE控件内产生网页源码:

    <HTML><body id="myContent"></body></HTML>
  2. 设置网页内容
   mCtrlHtml1.SetTagContents("myContent", "<br><center><font size=""9"">勇芳软件工作室<br></font><br><a href=""soft.htm"">点击打开本地文件例题</a>" _
      "<br><br><a href=""http://vfbdev.yfvb.com"">点击打开网址例题</a>" _
      "<br><br><a href=""http://vfbdev.yfvb.com"" target=""_blank"">点击弹出新窗口例题</a></center>")

这样就是网页<body id=""myContent"">插入网页代码</body> 中间插入任意网页代码。

事件:MC_HN_BeforeNavigate 打开新URL

Function Form1_mCtrlHtml1_MC_HN_BeforeNavigate(hWndForm As hWnd, hWndControl As hWnd, Url As Const WString)As Boolean
   Dim nurl As String =Url 
   Print "新URL",nurl  

   Function = False '返回 False 可以打开这个URL, 返回 True 就不允许打开这个网址

End Function

当你点击链接,可以在这个事件中决定是否打开这个URL,实现网页交互,就是网页是前端,VFB写后端代码的重要事件。
你可以在此设置新的网页内容,然后返回 True ,实现全内存交互。

事件:MC_HN_NewWindow 弹出新窗口

当链接中有 _blank 点击后会弹出新IE窗口

<a href=""http://vfbdev.yfvb.com"" target=""_blank"">点击弹出新窗口例题</a>

你可以在此事件中阻止弹窗,或写入新网页内容,实现 VFB 后端处理效果。

Function Form1_mCtrlHtml1_MC_HN_NewWindow(hWndForm As hWnd, hWndControl As hWnd,Url As Const WString)As Boolean
  Dim nurl As String =Url  
     Print "新窗口",nurl

    Function = True '返回 False 禁用弹出新窗口  返回 True 允许弹窗
End Function

评论一下?

OωO
取消