webbrowser 跨域 拒绝访问的问题

WormJan 2010-11-07 06:08:37
d:\1.html 的代码:
ddddddd
<iframe application="yes" width=600 height=600 id="wori" src="http://www.baidu.com"></iframe>

然后在vb中写代码,
wb1.Navigate2 "d:\1.html"

Private Sub wb1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Debug.Print URL
If URL = "http://www.baidu.com/" Then
MsgBox wb1.Document.parentWindow.frames("wori").Document.All("kw").Value
End If
End Sub

错误提示: “拒绝访问”。
应该是跨域访问的问题。有没有办法解决这个问题?谢谢。
...全文
702 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
WormJan 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sysdzw 的回复:]
引用 3 楼 superfans98 的回复:

谢谢楼上2位。
sysdzw 的代码确实可行。不过还得带一个Edanmo 's OLE interfaces &amp; functions v1.4

不知道不引用这个,是不是就无法实现我想要的效果了。

求高手解答。谢谢。
基本就是这个办法了,默认的浏览器设计是为了什么什么安全不允许跨域访问的,这是对于做web开发的那些……
[/Quote]

呵呵,多谢了。结贴。
无·法 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 superfans98 的回复:]

谢谢楼上2位。
sysdzw 的代码确实可行。不过还得带一个Edanmo 's OLE interfaces & functions v1.4

不知道不引用这个,是不是就无法实现我想要的效果了。

求高手解答。谢谢。
[/Quote]基本就是这个办法了,默认的浏览器设计是为了什么什么安全不允许跨域访问的,这是对于做web开发的那些用js的也是个头疼的问题。当初我寻找vb跨域访问的方法找了很久,最终就是得到了上面的方法,想想来看你还是很幸福的。。。你实在不想带个tlb文件的话只有跟Edanmo求代码了。。

参考:http://topic.csdn.net/u/20100826/21/57113d41-6a6f-4b97-b20d-70bf26f55b7e.html
WormJan 2010-11-08
  • 打赏
  • 举报
回复
谢谢楼上2位。
sysdzw 的代码确实可行。不过还得带一个Edanmo 's OLE interfaces & functions v1.4

不知道不引用这个,是不是就无法实现我想要的效果了。

求高手解答。谢谢。
无·法 2010-11-08
  • 打赏
  • 举报
回复
' 为运行本程序,应在“菜单->工程->部件”中添加“Microsoft Internet Controls”
' 并在“菜单->工程->引用”中添加“Microsoft HTML Object Library”和“Edanmo's OLE interfaces & functions v1.4”
' Edanmo 's OLE interfaces & functions v1.4在有些机器可能没有,可以到这里下载:http://download.csdn.net/source/2652292

Private Sub Form_Load()
wb1.Navigate2 "d:\1.html"
End Sub

Private Sub wb1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Debug.Print URL
If URL = "http://www.baidu.com/" Then
getFrames(wb1).Document.All("kw").Value = "谷歌"
MsgBox getFrames(wb1).Document.All("kw").Value
End If
End Sub

'WB为要处理的webbrowser
Private Function getFrames(ByVal WB As WebBrowser) As Object
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
Dim pBrowser As SHDocVwCtl.WebBrowser_V1

Set pContainer = WB.Object.Document
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then
Set pContainer = Nothing
Do While pEnumerator.Next(1, pUnk) = 0
Set pBrowser = pUnk
If Err.Number = 0 Then
Print "Frame: " & pBrowser.LocationURL

If pBrowser.LocationURL = "http://www.baidu.com/" Then '可以在这里加条件判断得到指定的frame,基本可以根据url或者innerHTML中的某个关键字符
Set getFrames = pBrowser
Exit Function
End If
End If

Loop
Set pEnumerator = Nothing
End If
End Function

1,502

社区成员

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

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