我遇到了使用vba访问iframe的contentwindow的问题。使用iframe.domain = document.domain进行检查时,框架位于同一个域中。以下是我到目前为止所尝试的内容。我阅读了所有网站,但无法找到解决方法。用于简化相同域/跨域消息传递的任何其他方法都非常值得注意。
Dim ie As New InternetExplorer
Dim objshell, objshellwindows
Dim doc As MSHTML.HTMLDocument
Dim doc1 As MSHTML.IHTMLDocument
Dim iframe As MSHTML.HTMLIFrame
Set objshell = CreateObject("Shell.Application")
Set objshellwindows = objshell.Windows
For Each ie In objshellwindows
If InStr(ie.LocationURL, "http://www.example.com/examples/camera/html/index.html") > 0 Then
Set doc = ie.document
For Each iframe In doc.getElementsByTagName("IFRAME")
Set doc1 = iframe.contentWindow.document '---Access Denied/ Permission Denied Error
Next
End If
Next
答案 0 :(得分:0)
由于same-origin policy,有时您将无法访问这样的IFrame。
您可以使用RegEx或更佳的格式从响应文本中获取数据-使用IFrame的src
属性的链接发送请求并直接获取其内容。