标题:webbrowser能否直接运行html文本
只看楼主
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
结帖率:100%
已结贴  问题点数:20 回复次数:21 
webbrowser能否直接运行html文本
目前的做法是,通过下面的语句运行一个html文件
thisform.olecontrol1.navigate2(html文件名)
问题:能否不运行html文件,直接运行html文本?
搜索更多相关主题的帖子: html 运行 文件 webbrowser 文本 
2023-02-17 08:50
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:0 
可以啊,本来就是ie内核,相当于自己的浏览器,实质就是ie。刚没看懂你的意思~~~

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

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

2023-02-17 10:35
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用sam_jiang在2023-2-17 10:35:25的发言:

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

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

是的,就是想用html文本直接执行,而不用再调用一个文件
我不知道用什么方法,请指教
2023-02-17 11:04
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:0 
没用过webbrowser控件,不是很清楚是否可以直接执行html文本,按理说是有这个功能的。(xml解析器就是可以执行XML文件,以及xml文本的)

有个笨办法,就是把你的HTML文本保存为临时文件,再执行这个临时html文件。
2023-02-17 12:05
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用sam_jiang在2023-2-17 12:05:32的发言:

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

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

现在用的就是这个笨办法
2023-02-17 13:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
这样试试
2023-02-17 15:08
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
方法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的写法有问题吗?
2023-02-17 15:44
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 7楼 laowan001
地址字符串长度有限制,本测试不能超过515个字符。
或者用脚本动态创建页面
2023-02-17 17:11
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:0 
大概过程是这样:
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编辑过]

2023-02-17 17:28
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用吹水佬在2023-2-17 17:11:28的发言:

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

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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511311-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.105159 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved