2012-08-05 46 views
3

現在,大家都知道在那裏你一拳這段JavaScript代碼到瀏覽器的地址欄中可愛的小竅門:用Javascript編輯後保存頁面?

document.body.contentEditable = 'true'; document.designMode = 'on'; void 0 

和El的Presto!你可以開始自由編輯一個網站,只是你想要它。

唯一的問題是 - 你不能保存它!

在做了一些快速的研究後,我發現最有可能的,最好的方法是通過方法suggested here,其中包括以某種方式將頁面變成巨大的形式並將其發佈到MySQL數據庫。

當然,雖然這樣做很好,但它最終會保存我的整個頁面 - 而不僅僅是要編輯的部分或容器 - 這是一個主要問題,因爲我們的開發人員需要保留這樣的代碼行as ...

<?php include('header.php'); ?> 

...不在HTML中輸出。換句話說:它將保存我的頁面,使其顯示在輸出的HTML中,覆蓋原始PHP文件中的內容。

我在問怎麼做,我將如何去保存一個這樣編輯的網站,但只是保存或更新網站上的一個或兩個可編輯的容器(不是全部,所以我的PHP代碼不會不會被覆蓋)?

例如:

<p>This Won't get updated when the page is "saved"</p> 
<div id="update-this-contianer"> 
    This area will be passed on to the MySql database, and then updated into the same section of the original file. 
</div><!-- End Area To Update --> 
+0

我得到你所要求的完美。 你可以做的一件事是,將php文件保存爲html文件,對其進行更改,保存,將其轉換回php。 另一件事是,如何使用工具_like_ dreamweaver有一個設計器預覽? – Prasanth 2012-08-05 12:33:17

+0

你好。感謝您的答覆!偉大的一點,但使用Dreamweaver打敗了目的 - 因爲我需要它可以在網上爲我的客戶編輯。 – 2012-08-05 13:05:29

回答

6

而是對整個身體設定contentEditable的,只是把它要編輯的元素。然後,將該元素的內容發送到服務器。當您想要再次獲取數據時,只需將該部分包含在適當的位置即可。

+0

謝謝你,把過程放到我的視角:) – 2012-08-05 13:03:49

1

只需創建一個對象,當您按下按鈕並使用jQuery post發送它時,可以獲取所有數據。

例如:

var val = $('#update-this-contianer').html() 
$.post('/post-address', {value: val}, function(returnMsg){ 
console.log(returnMsg) 
} 

你怎麼把它找回來,並把它變成原來的文件不過是更加複雜。在節點中,我將編輯save to db函數,以便打開文件X並將其附加到某處,或者將其附加到req變量或其他東西上並將其提供。

但是,如果這是一個面向公衆的頁面,出於安全原因,請不要這麼做。

+0

毫米我知道你的意思,第一部分很自我解釋,但將它保存到實際文件是事情開始的地方變得古怪:/ – 2012-08-05 13:01:59

+0

感謝您的幫助也順便:) – 2012-08-05 13:02:37

2

...不回答你的問題,但也許有助於解決...:

即使它,我聽起來很簡單(把CONTENTEDITABLE =「是」的元素,你去) - 這是不...

您將不得不使用JavaScript來捕捉您的頁面的編輯元素,並將現有的/新的/更改的內容保存到數據庫中。

我決定不重新發明輪子,並在過去使用阿羅哈一個項目啓動:

http://aloha-editor.org/

+0

您先生,是一個天才。 – 2012-08-05 13:00:30

+0

問題,您是否有某種系統可以保存Aloha Edit更改?因爲顯然它只是一個編輯器 - 不是保存內容的東西。 – 2012-08-06 07:41:02

+0

@AdamMcArthur是的 - 你將不得不編寫一個小部分來保存內容。我使用了Mysql和PHP。 – madflow 2012-08-06 08:03:14