我目前的項目涉及使用文檔編輯器,無論好壞,都使用mshtml並將contentEditable設置爲true來實現。我們當然正在考慮用其他方式取代這種設置,但目前認爲這不是一種選擇。使用mshtml設置contentEditable,防止選擇div
在如此重要的情況下,我們這樣做是使用VS 2008(.NET 3.5)& C#:
document = (HtmlDocument)this.editorWebBrowser.Document;
body = (HtmlBody)document.body;
body.contentEditable = true;
我們想隱藏我們的大多數用戶界面背後的結構化編輯的,而是讓用戶以任何他們喜歡的方式編輯文本。當我們添加一個具有幾種樣式的div時,問題就出現了:
(添加一個body標籤來模擬我們正在做的事情,所以你可以在IE中測試,但是記住我們正在使用C#/ .Net/VS)
<BODY contentEditable="true">
<DIV class="intro" style="border: 1px solid blue; width=100%;">
<P>My Intro</P>
</DIV>
<P>Other Text</P>
</BODY>
有兩件事是不對的。
- The first click by the user selects the div。我們希望點擊直接進入文本,並且絕不讓用戶看到調整大小手柄。
- 如果用戶將光標放在其他文本中,然後嘗試使用鍵盤移動到div文本,則會阻止它們。當你在外面移動時,div被視爲一個角色。
所以,有效的是,有什麼辦法讓div的行爲像只是背景裝飾,但它周圍的一切仍然是可編輯的?這個html完全是內部的,所以我們可以用它來做任何事情。所以div本身並不重要。重要的是,我們:
- 蘊含多種P或其他標記
- 顯示用戶在視覺上所有包含P或其他標記是一個組的一部分,就像當前的div邊框&背景色造型現在完成。
This SO question讓我擔心,我想要的東西不可能與我們目前的設置,但我要求幫助任何其他人在類似問題上遇到困難。我會添加一些我們在一瞬間想到的不完美的解決方案。
可能與否,感謝您的任何想法。