Re: 實作HTML Editor的問題

看板C_Sharp (C#)作者 (Who cares?)時間20年前 (2005/08/13 15:07), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《ganymade (呀)》之銘言: : 使用者可以指定一些我建立好的HTML語法 : 指定放到2號那個<td></td>裡 : 但問題是,要如果去找到是哪一<td>區塊? 我不是很明白你想要有怎樣子的視覺效果,所以試著揣摩提出一個解法。 在說明解法之前,先說明一下我對利用MSHTML.DLL開發出來的HTML editor的認知。 以MSHTML開發出來的HTML editor,基本上都可以視為是一個WebBrowser control, 只是這個WebBrowser control內的IHTMLDocument2介面的designMode property被設 為"On",所以裡頭的那份文件可以被視覺化編輯,裡頭的javascript/vbscript都不 會被執行。我利用這個行為讓自己的RSS news reader顯示出RSS item description 及ATOM entry content而不會跑裡頭的script;這些欄位內常常會有跑不起來而出現 javascript error的東西,也容易被惡意插入奇怪的script code,利用WebBrowser control來顯示這些欄位時,最好設為禁止執行裡頭的script。 在這樣的HTML editor內,也不是所有東西都一定可以被編輯、更動的。如果一個 HTML tag的contentEditable attribute被設為"false",在它範圍內的tag就是不 可以被修改、刪除的,除非它範圍內的tag的contentEditable attribute有另外 註明為"true"。我用這個行為,讓上段顯示在HTML editor (也就是HTML文件設為 design mode的WebBrowser control) 內的HTML既不會執行任何javascript,也不 會變成使用者可以去修改的狀態。 要解決你的需求,你的HTML editor可以載入預先設計好的HTML文件,這文件內只 有必須讓使用者編輯的部份才是設為contentEditable="true"的。如此一來,要 插入新元件,也只能插到你允許使用者修改的區域內。 如果一個畫面只想讓使用者能動單一個<td>...</td>內的東西,你可能需要設計 幾頁類似Wizard的頁面來分開編輯不同區塊。 如果你想個別取出使用者編輯的東西,而省略掉你提供給使用者的HTML版面, 最不需要技術的方法就是在可編輯範圍前後加上可以唯一識別的注解或屬性值; 最具彈性又不用改code的方法,則是找個DOM parser for HTML,把HTML給parse 成XML DOM物件,用XPath來唯一定位這些使用者編輯的東西,這樣也可以很方便 對使用者輸入的內容加以過濾檢查或加工處理。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.222.17.194

140.119.201.73 08/13, , 1F
謝謝你 大概了解了
140.119.201.73 08/13, 1F
文章代碼(AID): #12_Pn5Mz (C_Sharp)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #12_Pn5Mz (C_Sharp)