我正在爲一個WebKit.NET
替換一個.NET的WebBrowser
,並且我在WebBrowser
中使用的一個功能是我無法弄清楚如何在包裝我正在寫WebKit
是從JavaScript和C#代碼傳遞DOM元素的能力。在C#和JavaScript之間傳遞元素
在WebBrowser
中,您只需撥打InvokeScript
並傳遞HtmlElement
的DomElement
屬性作爲參數,JavaScript函數將獲得該元素。同樣,您可以將JavaScript中的元素傳遞給C#,C#代碼將獲得一個DomElement
對象。
在WebKit
據我所知我不能這樣做。 InvokeStriptMethod
方法被破壞,但StringByEvaluatingJavaScriptFromString
不是,它允許我將腳本注入當前文檔並在以後調用它們。
請注意,這些文檔不會是我自己創建的文檔,所以我不能做像給每個元素分配ID的東西。這是一個Web刮板,我需要儘可能避免與文檔元素混淆。
一個可能會工作的黑客是爲元素分配一個臨時ID並保留舊的ID備份,然後我可以通過JavaScript或C#調用GetElementById
來獲取元素,然後重新分配舊元素的ID 。問題是當ID爲undefined
時,WebKit的GetAttribute('id')
會給我一個空字符串,所以我的C#代碼無法知道ID是空字符串還是undefined
,誰知道當前網頁的腳本可以依賴由於某種原因,ID爲undefined
,因此將ID設置爲空字符串可能會弄亂他們的javascript。
任何人有更好的主意或有任何其他WebKit
我可以使用的方法?
問題太模糊,添加的代碼示例。 – 2013-08-15 16:29:43