注册 登录
编程论坛 VFP论坛

webbrowser能否直接运行html文本

laowan001 发布于 2023-02-17 08:50, 2032 次点击
目前的做法是,通过下面的语句运行一个html文件
thisform.olecontrol1.navigate2(html文件名)
问题:能否不运行html文件,直接运行html文本?
21 回复
#2
sam_jiang2023-02-17 10:35
可以啊,本来就是ie内核,相当于自己的浏览器,实质就是ie。刚没看懂你的意思~~~

你的意思是解析html文件的文本呗。。。

[此贴子已经被作者于2023-2-17 10:52编辑过]

#3
laowan0012023-02-17 11:04
以下是引用sam_jiang在2023-2-17 10:35:25的发言:

可以啊,本来就是ie内核,相当于自己的浏览器,实质就是ie。刚没看懂你的意思~~~

你的意思是解析html文件的文本呗。。。

是的,就是想用html文本直接执行,而不用再调用一个文件
我不知道用什么方法,请指教
#4
sam_jiang2023-02-17 12:05
没用过webbrowser控件,不是很清楚是否可以直接执行html文本,按理说是有这个功能的。(xml解析器就是可以执行XML文件,以及xml文本的)

有个笨办法,就是把你的HTML文本保存为临时文件,再执行这个临时html文件。
#5
laowan0012023-02-17 13:20
以下是引用sam_jiang在2023-2-17 12:05:32的发言:

没用过webbrowser控件,不是很清楚是否可以直接执行html文本,按理说是有这个功能的。(xml解析器就是可以执行XML文件,以及xml文本的)

有个笨办法,就是把你的HTML文本保存为临时文件,再执行这个临时html文件。

现在用的就是这个笨办法
#6
吹水佬2023-02-17 15:08
这样试试
只有本站会员才能查看附件,请 登录
#7
laowan0012023-02-17 15:44
方法1:
LOCAL xurl
xurl = "about:<html><body><pre>hello world</pre><body></html>"
thisform.olecontrol1.navigate2(xurl)
结果:可以显示 hello world

方法2:
xurl = FILETOSTR('D:/fj/pie-simple.html')
xurl = "about:<html><body><pre>"+xurl+"</pre><body></html>"
thisform.olecontrol1.navigate2(xurl)
结果:没有任何反应就结束了,窗口还是空白的

方法2的写法有问题吗?
#8
吹水佬2023-02-17 17:11
回复 7楼 laowan001
地址字符串长度有限制,本测试不能超过515个字符。
或者用脚本动态创建页面
#9
csyx2023-02-17 17:28
大概过程是这样:
Thisform.olecontrol1.Navigate('')
Thisform.olecontrol1.Navigate('about:blank')
Inkey(1)
Try
    oDoc = Thisform.olecontrol1.Document
Catch
    oDoc = Null
EndTry
If Vartype(oDoc) == 'O' and !IsNull(oDoc)
    oDoc.Write('Hello world')
EndIf
由于导航到空白页是由 webbrowser 异步完成的,因此什么时候完成装载(能取到 Document 对象)时间不定,最好在 DocumentComplete 事件中写 html 字符串

[此贴子已经被作者于2023-2-17 17:45编辑过]

#10
laowan0012023-02-17 21:23
以下是引用吹水佬在2023-2-17 17:11:28的发言:

地址字符串长度有限制,本测试不能超过515个字符。
或者用脚本动态创建页面

515个肯定不够用
另:用脚本动态创建页面如何实现?我现在有已经有生成好的html文件
#11
吹水佬2023-02-17 22:46
以下是引用laowan001在2023-2-17 21:23:50的发言:


515个肯定不够用
另:用脚本动态创建页面如何实现?我现在有已经有生成好的html文件

创建窗口时先打开一个空页面 about:blank,再用JS写入html
#12
吹水佬2023-02-18 07:40
简单的可以用Document.Write方法
WebBrowser1.navigate2("about:blank")
INKEY(0.1)    && 中断一下,确保Document可用
WebBrowser1.Document.Write(xurl)

[此贴子已经被作者于2023-2-18 08:40编辑过]

#13
laowan0012023-02-18 09:05
简单的可以用Document.Write方法
WebBrowser1.navigate2("about:blank")
INKEY(0.1)    && 中断一下,确保Document可用
WebBrowser1.Document.Write(xurl)


成功啦
谢吹版


[此贴子已经被作者于2023-2-18 09:35编辑过]

#14
laowan0012023-02-18 10:49
只有本站会员才能查看附件,请 登录


附件左侧是VFP表单,右侧是google浏览器中显示的同一个文件
问题:浏览器中鼠标移到色块中时,色块会凸起并显示名称及数量,VFP中的无此效果,能否表现呢?
附件开始时浏览器刷新时,图表有个动画效果,这个效果在VFP中可实现

上面是ECHART的一个饼图,以前做过老版本的,在VFP中可显示动画效果,但到了新版以后动画效果就打折扣了

[此贴子已经被作者于2023-2-18 10:51编辑过]

#15
吹水佬2023-02-18 10:52
给个html文件测试一下看看
#16
laowan0012023-02-18 11:04
程序代码:
<!--
    此示例下载自 https://echarts./examples/zh/editor.html?c=pie-simple
-->
<!DOCTYPE html>
<html lang="zh-CN" style="height: 100%">
<head>
  <meta charset="utf-8">
</head>
<body style="height: 100%; margin: 0">
  <div id="container" style="height: 100%"></div>

  
  <script type="text/javascript" src="https://fastly./npm/echarts@5.4.1/dist/echarts.min.js"></script>
  <!-- Uncomment this line if you want to dataTool extension
  <script type="text/javascript" src="https://fastly./npm/echarts@5.4.1/dist/extension/dataTool.min.js"></script>
  -->
  <!-- Uncomment this line if you want to use gl extension
  <script type="text/javascript" src="https://fastly./npm/echarts-gl@2/dist/echarts-gl.min.js"></script>
  -->
  <!-- Uncomment this line if you want to echarts-stat extension
  <script type="text/javascript" src="https://fastly./npm/echarts-stat@latest/dist/ecStat.min.js"></script>
  -->
  <!-- Uncomment this line if you want to use map
  <script type="text/javascript" src="https://fastly./npm/echarts@4.9.0/map/js/china.js"></script>
  <script type="text/javascript" src="https://fastly./npm/echarts@4.9.0/map/js/world.js"></script>
  -->
  <!-- Uncomment these two lines if you want to use bmap extension
  <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=YOUR_API_KEY"></script>
  <script type="text/javascript" src="https://fastly./npm/echarts@5.4.1/dist/extension/bmap.min.js"></script>
  -->

  <script type="text/javascript">
    var dom = document.getElementById('container');
    var myChart = echarts.init(dom, null, {
      renderer: 'canvas',
      useDirtyRect: false
    });
    var app = {};
   
    var option;

    option = {
  title: {
        text: '各温区货量',
        subtext:  '',
    left: 'center'
  },
  tooltip: {
    trigger: 'item'
  },
  legend: {
      show: true,
    orient: 'vertical',
    left: 'left'
  },
  series: [
    {
      name: 'Access From',
      type: 'pie',
      radius: '50%',
      data:[{value: 64476,name: '冷藏'},{value: 64028,name: '冷冻'},{value: 186819,name: '常温'}
],
      emphasis: {
        itemStyle: {
          shadowBlur: 10,
          shadowOffsetX: 0,
          shadowColor: 'rgba(0, 0, 0, 0.5)'
        }
      }
    }
  ]
};

    if (option && typeof option === 'object') {
      myChart.setOption(option);
    }

    window.addEventListener('resize', myChart.resize);
  </script>
</body>
</html>
#17
吹水佬2023-02-18 12:00
无搞头,现在打开IE就提示IE已经与Edge合并了,看来WebBrowser就这样了。
#18
shonken2023-02-18 16:12
以下是引用laowan001在2023-2-18 10:49:05的发言:



附件左侧是VFP表单,右侧是google浏览器中显示的同一个文件
问题:浏览器中鼠标移到色块中时,色块会凸起并显示名称及数量,VFP中的无此效果,能否表现呢?
附件开始时浏览器刷新时,图表有个动画效果,这个效果在VFP中可实现

上面是ECHART的一个饼图,以前做过老版本的,在VFP中可显示动画效果,但到了新版以后动画效果就打折扣了



我也是在用ECHART做图表,WB没特效的,用SBrowser或WebView2可以
#19
laowan0012023-02-18 16:34
以下是引用吹水佬在2023-2-18 12:00:41的发言:

无搞头,现在打开IE就提示IE已经与Edge合并了,看来WebBrowser就这样了。

看来也只能这样了
#20
laowan0012023-02-18 17:07
以下是引用shonken在2023-2-18 16:12:28的发言:




我也是在用ECHART做图表,WB没特效的,用SBrowser或WebView2可以


SBrowser需要注册ocx,用户服务比较麻烦
WebView2还没用过,研究研究

[此贴子已经被作者于2023-2-18 17:15编辑过]

#21
吹水佬2023-02-18 20:01
回复 20楼 laowan001
WebView2有个API函数NavigateToString相当于 Navigate(string)
vfp WebView2 Demo 的 WebView_NavigateHtml 就是调用 NavigateToString API
最新更新顺便带上几个vfp与web之间通信示例,可以参考一下。
#22
laowan0012023-02-18 22:47
回复 21楼 吹水佬
谢谢吹版,我学习学习
1