bcrun大哥,你好, vbRichClient5库 cWebKit组件的问题,请帮忙

CHRL 2014-10-10 06:03:34
请bcrun大哥帮忙看看

DDD.html

<html>
<head>
<script language="javascript">
function aa()
{
alert('An onMouseOver event');return false
//<div onmousemove="javascript:aa()">asdfasdfasdfasdf</div>
}
</script>
</head>
<body>
<div id='abc1'>asdfasdfasdfwerasdfqwer</div>
<a href="javascript:aa()">This is a link</a>
</body>
</html>

WebControl.ctl

Option Explicit

Private WithEvents oWebKit As cWebKit

Public Property Get Browser() As cWebKit
Set Browser = oWebKit
End Property

Private Sub oWebKit_JSEventCallBack(EventName As String, JSONEventObj As vbRichClient5.cCollection, JSONResult As vbRichClient5.cCollection)
MsgBox EventName & vbTab & ",JSEventCallBack"
End Sub

Private Sub oWebKit_NewWindowRequest(NewWebKitInstance As vbRichClient5.cWebKit, ByVal OpenAsTab As Boolean)
Set oWebKit = NewWebKitInstance
OpenAsTab = True
End Sub

Private Sub UserControl_Initialize()
Set oWebKit = New_c.WebKit(True, "D:\Work\vbRC5BaseDlls")
oWebKit.InitWebKitDll "WebKit.dll"
oWebKit.InitializeView UserControl.hWnd
End Sub

Private Sub UserControl_Resize()
On Error Resume Next
UserControl.ScaleMode = vbPixels
oWebKit.Move 0, 0, UserControl.ScaleWidth, UserControl.ScaleHeight
End Sub

Private Sub UserControl_Terminate()
Set oWebKit = Nothing
End Sub



frmMain.frm

Option Explicit

Private Sub Command_Click()
wcMain.Browser.Navigate2 App.Path & "\DDD.html"
Dim a As IDOMDocument
'在執行這一句的時候老報錯是怎麼回事呀?
Set a = wcMain.Browser.GetElementByID("abc1")
End Sub
Private Sub Form_Resize()
On Error Resume Next
wcMain.Move wcMain.Left, wcMain.Top, Me.Width - 500, Me.Height - wcMain.Top - 600
End Sub

Private Sub Form_Unload(Cancel As Integer)
New_c.CleanupRichClientDll
End Sub
...全文
1025 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbweb 2014-11-27
  • 打赏
  • 举报
回复
chrl您好,本人是个业余的VB爱好者,在CSDN论坛上看到您最近正在研究vbrichclient5,webkit,本人目前也准备研究这个东西,但本人的技术实在是太业余了,一点头绪都没有,想请您看能不能发一些关于这方面的源码供我参考,谢谢了。联系邮箱:xgpgood@qq.com
CHRL 2014-10-14
  • 打赏
  • 举报
回复
引用 6 楼 bcrun 的回复:
没时间建工程实际测试,不过看楼主给的代码不太对劲。浏览器控件的Navigate2方法不一般是异步执行的吗,如IE的那个则一般是在DocumentComplete这样的事件过程里,才访问他的DOM元素的吧。 至于你后面说的用这些代码调用正常: AddScript,LoadHTMLString 这也好理解,本来这样直接添加的,就是同步的,也即按顺序执行的嘛。
谢谢你,果然是异步执行的问题,这个问题是可以了,但是还有一点不明白的,请大哥指点一下,请看如下代码:

Dim a As IDOMElement
Set a = wcMain.Browser.GetElementByID("btnAdd")
'用 AddScript 加入jQuery庫以后
'這一句可以
a.setAttribute "onclick", "javascript: window.location=""http://192.168.91.24/htdocs/a.gif"";"

'這一句不行,也就是不能讀本地的圖片資源,不知道為什麼?
a.setAttribute "onclick", "javascript: window.location=""file:///c:/a.gif"";"
bcrun 2014-10-14
  • 打赏
  • 举报
回复
这个大概是跨域安全问题,你引用的资源最好是在页面的子目录下。也许Webkit核心的控件有某个方法可以取消掉这些跨域安全检查,不过那就要问熟悉这控件的人了。
bcrun 2014-10-13
  • 打赏
  • 举报
回复
没时间建工程实际测试,不过看楼主给的代码不太对劲。浏览器控件的Navigate2方法不一般是异步执行的吗,如IE的那个则一般是在DocumentComplete这样的事件过程里,才访问他的DOM元素的吧。 至于你后面说的用这些代码调用正常: AddScript,LoadHTMLString 这也好理解,本来这样直接添加的,就是同步的,也即按顺序执行的嘛。
CHRL 2014-10-11
  • 打赏
  • 举报
回复
引用 3 楼 CHRL 的回复:

wcMain.Browser.Navigate2 App.Path & "\DDD.html"
Dim a As IDOMDocument
Dim b As IDOMElement
Dim c As IDOMElement

'这样可以
Set a = wcMain.Browser.Document
Set b = a.documentElement()

‘这一句就不行
Set c = a.GetElementByID("abc1")

Dim d As cCollection Set d = wcMain.Browser.GetElementsByTagName("div") ’这样可以哦
CHRL 2014-10-11
  • 打赏
  • 举报
回复

wcMain.Browser.Navigate2 App.Path & "\DDD.html"
Dim a As IDOMDocument
Dim b As IDOMElement
Dim c As IDOMElement

'这样可以
Set a = wcMain.Browser.Document
Set b = a.documentElement()

‘这一句就不行
Set c = a.GetElementByID("abc1")

CHRL 2014-10-11
  • 打赏
  • 举报
回复
引用 4 楼 CHRL 的回复:
[quote=引用 3 楼 CHRL 的回复:]

wcMain.Browser.Navigate2 App.Path & "\DDD.html"
Dim a As IDOMDocument
Dim b As IDOMElement
Dim c As IDOMElement

'这样可以
Set a = wcMain.Browser.Document
Set b = a.documentElement()

‘这一句就不行
Set c = a.GetElementByID("abc1")

Dim d As cCollection Set d = wcMain.Browser.GetElementsByTagName("div") ’这样可以哦[/quote] 但是如果我直接这样写又行,不知道为什么会这样:

wcMain.Browser.AddScript "function aa(){alert('An onMouseOver event');return false}"
DoEvents
wcMain.Browser.LoadHTMLString "<body><div id='abc1'>你好,我愛死你了</div><div id='abc2' onClick=""javascript:aa()"">我不好</div></body>"
    
Dim b As IDOMNode
Set b = wcMain.Browser.GetElementByID("abc1")
'取出id文本
MsgBox b.textContent

wcMain.Browser.NodeReplaceInnerHTML b, "他也好,我愛死你了"

'給abc1增加一個click事件
wcMain.Browser.RegisterEventCallbackOn b, "onclick", "DEF"
无·法 2014-10-10
  • 打赏
  • 举报
回复
Set a = wcMain.Browser.GetElementByID("abc1") 改成 Set a = wcMain.Browser.Document.GetElementByID("abc1") 试试看
笨狗先飞 2014-10-10
  • 打赏
  • 举报
回复
关注,帮顶。
附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[坡道(ramp)] · 训练集:275 张 · 验证集:27 张 · 测试集:0 张 · 总计:302 张 该数据集聚焦于城市环境中各类建筑入口处的坡道设施,涵盖住宅、商铺、公共设施等多种场景,真实反映了无障碍通行设施在实际应用中的多样化形态。数据集中包含金属、橡胶、塑料等多种材质的坡道,以及不同尺寸、结构和安装方式的实例,充分体现了坡道在城市基础设施中的广泛部署与重要性。该数据集为城市智慧化管理、无障碍环境建设及公共安全监控提供了高质量的视觉基础支持。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 33 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.6372** mAP50-95 | 0.3401 Precision | 0.6603 Recall | 0.6190 train/box_loss | 1.0569 train/cls_loss | 0.7307 val/box_loss | 1.6084 val/cls_loss | 1.9323 【训练过程分析】 33 轮训练后 mAP50 仅 0.6372,模型收敛不充分。Loss 曲线前期下降后进入平台期,mAP 提升缓慢。mAP50-95 为 0.3401,定位精度同样偏低。 【模型性能评估】 Precision 0.6603、Recall 0.6190,精度高于召回,存在一... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧