2012-11-13 80 views
3

我剛剛發現了關於contenteditable屬性,我正在考慮它的實際用途。Contenteditable實用

我認爲這將是真棒快速更新的網頁,但也有一些問題,如:

  • 安全性:你顯然不希望任何人來更新您的網頁,從而使內容編輯應該受到相當嚴格的控制
  • 登錄後使頁面內容可編輯。這不需要改變整個頁面的標記嗎?本身並不是一個問題,但我應該想象一個相當大的工作
  • 保存新內容。理論上講,這可以通過ajax用json來完成,以將新的頁面標記保存在數據庫的字段中,難道不是嗎?另外,你如何確切地向網站確認「我已經完成了改變,現在可以保存」

我喜歡這個快速編輯頁面內容的想法,你將會看到它。我對在我的網站上實現這樣的事情感到非常興奮,但在嘗試之前我可以使用一些指導。

任何人都可以解決上面列出的問題以及任何我沒有考慮過的可能相關的問題嗎?

謝謝你的時間!

+0

可能我建議不要試圖保存整個頁面的標記,例如,你有一個博客文章的所有CSS規則,你可以在其中編輯標題/副標題/日期/作者/內容等等等等然後當您保存時,而不是抓取標記,您可以獲取每個單獨字段的內容,並將其保存爲模型數據等。是的,你只會將它用作JS強制的網絡應用程序。如果您確切知道每個頁面需要編輯哪些內容(而不是一個div上的空白頁面或一切),並且您進行了授權,那麼添加編輯能力並不是什麼大事。 – Norguard

回答

3
  • 安全是的,你不希望任何人來更新您的網頁,但是這不是什麼做contenteditable本身。人們現在可以使用瀏覽器的開發工具來更改互聯網上任何頁面的內容,但是如果服務器不接受更新,那麼除了僞造有趣的屏幕截圖外,對他們來說沒有多大用處。更重要的問題是通過確保用戶添加到頁面的內容是'安全的'(例如,這是博客通常在註釋中不允許大多數HTML標籤的原因)來防範諸如cross-site scripting攻擊之類的事情。
  • 登錄後編輯內容在用戶登錄後,只需在服務器端邏輯中添加contenteditable屬性即可。或者,在用戶單擊「編輯」按鈕時添加JavaScript。我不希望它改變整個頁面的標記,因爲這種方法是明智的,無論如何,從模板被存儲在數據庫中的內容填充的時候,頁面已經在服務器端產生了。如果您正在討論如何編輯一個靜態網站,那麼,您需要做很多工作,但是您可以按照您計劃讓人們編輯網頁的方式完成這項工作。
  • 保存新內容是的,用Ajax做。 JSON並不是真的有必要,它是你想要發回的HTML內容,對吧?以HTML格式發送它,只要記住以上有關跨站點腳本的註釋,並在服務器端進行安全檢查(絕對不要信任用戶輸入)。您如何確認用戶完成編輯取決於您,就像您將不得不添加編程邏輯以使用Ajax發送更改並處理服務器上的更改一樣,您將不得不在必要時添加顯示編輯工具的邏輯(粗體,斜體等按鈕) - 添加一個按鈕以同時執行更新。