假设我已经使用InternetExplorer.Application以编程方式导航到一个网站,该网站又设置了一个会话cookie,我该如何访问该cookie的值(此时仅在内存中)?
我能想到的唯一方法是将一些客户端脚本添加到Document.Body.InnerHTML中,然后使用.Navigate(“javascript:functionName()”)调用该脚本。假设该函数反过来创建一个元素,其中包含我可以在那时检索的cookie的值。
然而,这似乎令人费解,我还没有成功。请告诉我有一个更简单的方法。
编辑:Rick Strahl在另一个论坛上回答了我的问题。显然我没有仔细阅读文档,因为有一个document.cookie属性可以给我答案而不需要任何复杂的过程。现在,我是否对自己的问题进行投票? :)
答案 0 :(得分:1)
为了完整起见,我将我在上面的问题中添加的答案作为答案。
答案很简单,有一个document.cookie属性可以提供我想要的价值。我发现,困难在于找到可通过InternetExplorer.Application对象访问的DOM的官方文档。 Visual Studio中的Intellisense没有显示这个属性(至少对我而言)所以我假设没有这个属性。
我想我在这里找到了DOM的官方文档:
http://msdn.microsoft.com/en-us/library/ms535862(v=VS.85).aspx
和cookie属性具体在这里:
http://msdn.microsoft.com/en-us/library/ms533693(v=vs.85).aspx
希望这可以帮助别人避免在将来追逐他们的尾巴。
答案 1 :(得分:0)
感谢brettbaggott指出我正确的方向。以下是感兴趣的人的代码:
Private Declare Sub Sleep Lib "kernel32" _
(ByVal dwMilliseconds As Long)
Private Function getCookie()
Dim myIe As Object
Set myIe = CreateObject("InternetExplorer.Application")
myIe.Visible = False
myIe.Navigate "http://someurl"
Do While myIe.Busy
Sleep 20
Loop
getCookie= myIe.Document.cookie
End Function