2010-05-27 48 views
0

顧名思義,這是一個延續(排序)Manually Writing the HTML in TWebBrowser在TWebBrowser Pt中手動編寫HTML。 2

這次我試圖添加一些自動刷新邏輯到我得到的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)); 

而且做起來的(技術上並不功能)不同的方式...鑄造略有不同的位置:

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]))); 

同樣都是我從德爾福得到是一個訪問異常,我通過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)

回答

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,它會如果找不到 「標題」 元素

+0

我可能深入挖掘這些東西,但花了我一兩個小時才把這些廢話一起拉出來......老實說,我希望我做的是非常錯誤的事情(所有這些在相同接口的不同版本之間進行投射)。所以這篇文章的目的是爲了節省我幾個小時的功能調試時間,我無法證明花費了更多的時間。作爲一個側面說明,其他團隊(生成網頁)似乎願意添加自動刷新功能,所以我甚至不需要知道這一點。 +1雖然,我確實打算清理代碼,一旦我得到它的工作。 – LostNomad311 2010-05-27 22:37:26

+0

重點在於導航這樣的HTML文檔很大程度上取決於文檔的結構。你不能去下一步,除非你肯定有什麼可以開始... – 2010-05-27 23:35:26

+0

我明白你的意思了,我分析了HTML,編寫了代碼,得到了訪問衝突,並檢查HTML是否如我所料(在這種情況下有一個標題節點)。您提出的代碼更改,自動執行該檢查。相反,支票返回true告訴我什麼,除了我沒有我想要的,並試圖檢索。所以我們又是一個完整的圈子。我可以在此花費數小時,或向更有經驗的人請求幫助。我選擇了後來的 - 到目前爲止,似乎沒有人可以或將會幫助我... – LostNomad311 2010-05-28 19:13:42