2010-03-07 135 views
0

我目前正在使用.net WebBrowser控件工作所見即所得編輯器,並且需要執行拼寫檢查。如何在鼠標指針WebBrowser控件下獲取文本?

我的問題是我怎樣才能得到鼠標指針下的文本,當我右鍵單擊拼寫錯誤的單詞來顯示所有拼寫建議?

試圖用Javascript事件包裝html標籤中的每個拼寫錯誤的單詞,但似乎是從JavaScript調用C#代碼的問題。

+0

您可以使用............. 光標:指針; .......在CSS – jjj 2010-03-07 11:59:58

+0

哪個WebBrowser控件? – 2010-08-12 20:27:42

回答

1

好的 - 這裏是我的2美分。

首先,我想象你有一個可編輯的元素更可能是一個div,你用這個作爲你所見即所得的編輯器。我還猜測你有一個Ajax函數,你可以在某個按鍵上設置某個地方來檢查DIV內容的整個(甚至可能是某些)的拼寫,並且它可以發送一個拼寫錯誤的單詞列表。

我的想法是 - 1.在可編輯div的內容上創建一個範圍,然後使用TextRange對象搜索單詞 - 這裏:http://msdn.microsoft.com/en-us/library/ms535872%28VS.85%29.aspx。使用findText方法搜索文檔中的文本(範圍),並定位範圍的開始點和結束點以包含搜索字符串。

一旦你有這個,你應該將文本值複製到一個變量,然後構造一個<跨度>甚至可能設置跨度的底部邊框樣式有一個紅色下劃線,甚至使用圖像,使其看起來像普通拼寫錯誤的波浪一樣。將此Span的內容設置爲原始拼寫錯誤的單詞的值。另外,不要忘記爲此SPAN分配一個onclick(或右鍵單擊),以便您稍後可以對拼寫建議進行其他查找。太好了,現在你有一個離線的SPAN,但它還沒有插入到文檔中。

下一步:使用TextRange pasteHTML方法將新的SPAN粘貼到文檔中,記住範圍應該已經從查找操作中定義,所以你不應該再亂來尋找文本(或選擇它)。

一旦跨度在使用pasteHTML的文檔中,它應該是直截了當的,只需創建另一個div,絕對將其置於SPAN下,這樣當用戶右鍵單擊它時 - 「上下文菜單出現」 - 由阿賈克斯。

之後,它應該是一個非常簡單的情況下創建另一個範圍,並用簡單的文本替換這次SPAN。

這一切都是理論,但希望它有幫助!

而且你可能想看看 - http://www.aspfree.com/c/a/Code-Examples/Searching-Body-Text-with-textRange-Enter-the-Gecko/ - 這將幫助您在FireFox(不僅是IE)整體解決方案的工作

-1

我會添加一些更因爲我目前正在對兩分錢相似的東西。

好吧,所以我假設你是一個WebBrowser對象?如果是這樣,我的建議是每次你右鍵單擊時使用上下文菜單條。從那裏你可以觸發上下文菜單打開事件,將爲你抓取特定的HTML元素。

總之你可以使用類似的代碼片斷

Point mouseLocation; 

    private void ToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     HtmlElement elem = webBrowser.Document.GetElementFromPoint(mouseLocation); 
     //From here you would do what ever it is you need for your element in the browser 
    } 

    private void webContextMenuStrip_Opening(object sender, CancelEventArgs e) 
    { 
     //This just gets you the specific mouse position for the given element 
     mouseLocation = webBrowser.PointToClient(MousePosition); 
    } 

希望這ATLEAST讓你開始和好運!

相關問題