VBA:从InternetExplorer对象访问LocalStorage
VBA: Access LocalStorage from InternetExplorer object
除了执行JS在DOM上创建值之外,还有更简单/直接的方法从Internet Explorer对象访问本地存储变量吗?
我有自己的自定义解决方案,使用临时文本字段,但我想知道MS是否提供了直接功能。
Function retrieveLocalStorageValue(sURL As String, sLocalStorageVarName As String) As String
On Error GoTo ErrHandler1:
Dim javascriptString As String
Set oBrowser = New InternetExplorer
oBrowser.Silent = True
oBrowser.navigate sURL
oBrowser.Visible = True
Do
' Wait till the Browser is loaded
Loop Until oBrowser.readyState = READYSTATE_COMPLETE
On Error GoTo ErrHandlerJscript:
javastringUrl = "document.body.innerHTML += '<input id='""test1234'"" type='""text'"" value='""'+ localStorage.getItem('" & sLocalStorageVarName & "') +''""'>';"
'Execute javascript to create hidden field - Use double quotes in VBA to escape
'Wait in case it is needed
Application.Wait DateAdd("s", 1, Now)
oBrowser.document.parentWindow.eval javastringUrl
retrieveLocalStorageValue = oBrowser.document.getElementById("test1234").getAttribute("value")
Exit Function
ErrHandler1:
MsgBox ("Error, debugging required")
retrieveLocalStorageValue = "error"
ErrHandlerJscript:
MsgBox ("Error with javascript execution, debugging required")
retrieveLocalStorageValue = "error"
End Function
Sub test()
Dim test As String
test = retrieveLocalStorageValue("http://127.0.0.1/stackexchange/localStorageVBA.html", "testObject")
MsgBox test
End Sub
参考:http://maythesource.com/2014/04/22/vba-read-localstorage-variable-from-internet-explorer-object-using-temporary-textfield/
不是。可以,您可以设置对Microsoft Internet Explorer的引用和对Microsoft HTML对象库的引用。这将允许您直接访问DOM对象模型,intellisense将起作用。但是,如果您实际尝试访问该属性,它将抛出一个错误。(如下所示:)
Option Explicit
Sub Example()
ThisFails "http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_webstorage_local", "lastname"
End Sub
Function ThisFails(ByVal sURL As String, ByVal sLocalStorageVarName As String) As String
Dim oBrowser As SHDocVw.InternetExplorer
Dim hDoc As MSHTML.HTMLDocument
Dim hWin As MSHTML.HTMLWindow2
Set oBrowser = New SHDocVw.InternetExplorer
oBrowser.Silent = True
oBrowser.Navigate sURL
oBrowser.Visible = True
Do
' Wait till the Browser is loaded
Loop Until oBrowser.ReadyState = READYSTATE_COMPLETE
Do
Set hDoc = oBrowser.Document
'Trust me on these loops
Loop While hDoc Is Nothing
Do
Set hWin = hDoc.parentWindow
Loop While hWin Is Nothing
ThisFails = hWin.localStorage.getItem(sLocalStorageVarName)
End Function
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 访问布局信息是否也会导致浏览器重排
- Javascript,访问一个主要对象模块模式中的每个对象
- 如何访问声音管理器2创建的声音对象
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 如何将localStorage值设置为false
- JavaScript Pub/Sub属性访问问题
- 拒绝访问IE11中的localStorage,但仅在桌面模式下(不在城域模式下)
- 无法访问localStorage.getItem(JSONObj)的值
- 如何在同一时间或下次访问时使用www.为同一域创建localStorage
- 如何从php实现的js脚本传递访问令牌到扩展的localStorage
- 访问localStorage的最佳方法
- localStorage访问本地文件
- ios 10无法访问ionic中的localStorage
- PhoneGap localStorage访问数据的时间太长
- 如何在扩展后台页面访问localStorage
- 为什么localStorage不能作为对象访问?
- 仅在首次访问时显示>if(!localStorage.getItem(“runOnce”)){触发锚链接
- VBA:从InternetExplorer对象访问LocalStorage
- 访问其他控制器中的localStorage变量数据