顾名思义,这是Manually Writing the HTML in TWebBrowser
的延续(某种)这一次,我正在尝试为我得到的HTML添加一些自动刷新逻辑。我从几个来源拼凑了一种方法(见下文)。简而言之,我试图找到标题节点并在其后面添加一个元节点(在HTML头节点中)。但是,我遇到了访问冲突。
以下是来源:
iHtmlDoc := IHTMLDocument3(WebBrowser1.Document);
iHtmlEleTitle := IHTMLElement2(iHtmlDoc.getElementsByName('title').item(0, 0));
iHtmlEle := IHTMLElement2(IHTMLDocument2(iHtmlDoc).createElement(Format('<meta http-equiv="refresh" content="%d">', [1])));
iHtmlEleTitle.insertAdjacentElement('afterEnd', IHTMLElement(iHtmlEle));
和A(技术上不是功能上)不同的做法...这里的铸造略有不同:
IHTMLElement2(IHtmlDocument3(WebBrowser1.Document).getElementsByName('title').item(0, 0)).insertAdjacentElement('afterEnd', IHTMLDocument2(WebBrowser1.Document).createElement(Format('<meta http-equiv="refresh" content="%d">', [VPI_ISSUANCE_AUTO_RELOAD])));
我从Delphi获得的所有内容都是一个访问异常,我通过它上面的MSDN文档进行了捕获,但现在我希望有人在那里经历过相同的并且有一些见解。有什么帮助吗?
来源(我认为这就是全部):
http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm(自动重新加载)
http://delphi.about.com/od/adptips2005/qt/webbrowserhtml.htm(网页浏览器文档作为HTML文档)
http://msdn.microsoft.com/en-us/library/system.windows.forms.htmlelement.insertadjacentelement(VS.80).aspx(GetElementsByName)
http://www.experts-exchange.com/Web_Development/Components/ActiveX/Q_26131034.html(insertAdjacentElement)
http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_23407977.html(GetElementsByName)
答案 0 :(得分:2)
我不知道你的AV在哪里,但无论如何我会将复合表达式切成单件,这样你就可以检查你是否真的得到了一个接口/元素(不是零) )即可。
例如:
iHtmlEleTitle := IHTMLElement2(iHtmlDoc.getElementsByName('title').item(0, 0));
应该像
一样打破 iHtmlCol := iHtmlDoc.getElementsByName('title');
if Assigned(iHtmlCol) then
iHtmlEleTitle := IHTMLElement2(iHtmlCol.item(0, 0));
你检查iHtmlCol是不是nil,如果找不到“title”元素它将会是