我正在研究基于Vaadin 8的应用程序。在几个难以描述的场景中-并且我无法隔离触发因素-Sub ConnectToOracleViaADO()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim myResult As String
Set cn = New ADODB.Connection
cn.ConnectionString = "{Microsoft ODBC for Oracle};Server=myServerAddress; _
Uid=myUsername;Pwd=myPassword;"
cn.ConnectionTimeout = 5
cn.Open
If cn.State <> adStateOpen Then
MsgBox "Sorry, couldn't open database connection.", _
vbCritical + vbOKOnly, "Error"
Exit Sub
End If
cn.CommandTimeout = 1
Set rs = New ADODB.Recordset
rs.Open Source:="SELECT something;", _
ActiveConnection:=cn, _
CursorType:=adOpenStatic, _
LockType:=adLockReadOnly, _
Options:=adCmdUnspecified
myResult = rs.Fields(0).Value
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
开始在所有通话中返回document.createElement
。在IE11和Chrome中都可以看到这种情况(但在每种情况下情况都不同)。我的第一个理论是,这可能是浏览器内存不足的问题,但是我创建了一个场景,其中包含更多无法重现该错误的DOM元素,并且内存分析在问题发生时没有显着的内存使用高峰。此外,当它发生时,它是在可预测的时间点-不够随机,不会成为那种环境问题。
发生问题时,控制台报告undefined
函数的状态为奇数-看起来“坏了”,但似乎没有被其他函数或其他东西所破坏。以下是控制台在正常情况下显示的内容:
...这是在问题发生后显示的内容(加上对文档中不存在的属性的引用,以说明该内容与document.createElement
显示的内容之间的区别):
在Chrome中,控制台中的行为类似:
有人在任何浏览器中都看到过这种症状吗?和/或在寻找原因方面没有任何见识?
编辑2018年1月17日:当我最初写这篇文章时,我只目睹了IE11中的问题行为。从那以后,我在不同的情况下在Chrome中看到了相同的行为。
答案 0 :(得分:0)
我的问题是document.createElement
被一些我不知道的(笨拙)注入的反网络钓鱼JS所代替。 JS的问题不在此问题的范围内,但是对该问题的注释中提供的调试技巧对于跟踪该问题很有价值:
document.createElement
返回了document.hasOwnProperty('createElement')
,发现了true
被遮盖的事实。document.createElement
定义一个触发调试器的setter函数可以帮助我追踪有问题的代码。为此,我使用了break-on-access代码段,但在上面的this comment中也看到了简单的代码,可以自己动手做。