Сохранить contentEditable в HTML-файл с помощью JavaScript

1

Как сохранить контентный элемент с javascript (без PHP) в настоящий HTML-код? Поэтому я могу редактировать контент, даже если он находится в автономном режиме. Например, когда вы нажимаете кнопку "Сохранить", он заменяет старый файл новым (текст с изменениями).

Если есть способ сделать эту работу в автономном режиме с любым другим программным языком, пожалуйста, предложите.

Я нашел несколько примеров, но все они были сделаны с помощью PHP.

Кроме того, я отправлю код. В этом коде вы можете редактировать файл с помощью javascript и сохранять его. Но проблема в том, что она не сохраняется в фактическом HTML-коде.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title of the document</title>
</head>
<style type="text/css">
 body{ 
  font-family: "Dosis"; 
  font-size: 1.3em;
  line-height: 1.6em;
}

.headline{
  font-size: 2em;
  text-align: center;
}

#wrapper {
  width: 600px;
  background: #FFF;
  padding: 1em;
  margin: 1em auto;
  box-shadow: 0 2px 5px rgba(0,0,0,0.3);
  border-radius: 3px;
}

button {
  border: none;
  padding: 0.8em;
  background: #F96;
  border-radius: 3px;
  color: white;
  font-weight: bold;
  margin: 0 0 1em;
}

button:hover, button:focus {
  cursor: pointer;
  outline: none;
}

#editor {
  padding: 1em;
  background: #E6E6E6;
  border-radius: 3px;
}

</style>
<body>

<div id="wrapper">

  <section>
    <h1 class="headline">contentEditable Demonstration</h1>

    <button id="editBtn" type="button">Edit Document</button>
    <div id="editDocument">
      <h1 id="title">A Nice Heading.</h1>
      <p>Last Edited by <span id="author">Monty Shokeen</span>
      </p>
      <p id="content">You can change the heading, author name and this content itself. Click on Edit Document to start editing. At this point, you can edit this document and the changes will be saved in localStorage. However, once you reload the page your changes will be gone. To fix it we will have to retrieve the contents from localSotrage when the page reloads.</p>
    </div>
  </section>
</div>

    <script>
    var editBtn = document.getElementById('editBtn');
var editables = document.querySelectorAll('#title, #author, #content');

if (typeof(Storage) !== "undefined") {
  if (localStorage.getItem('title') !== null) {
    editables[0].innerHTML = localStorage.getItem('title');
  }
  if (localStorage.getItem('author') !== null) {
    editables[1].innerHTML = localStorage.getItem('author');
  }
  if (localStorage.getItem('content') !== null) {
    editables[2].innerHTML = localStorage.getItem('content');
  }
}

editBtn.addEventListener('click', function(e) {
  if (!editables[0].isContentEditable) {
    editables[0].contentEditable = 'true';
    editables[1].contentEditable = 'true';
    editables[2].contentEditable = 'true';
    editBtn.innerHTML = 'Save Changes';
    editBtn.style.backgroundColor = '#6F9';
  } else {
    // Disable Editing
    editables[0].contentEditable = 'false';
    editables[1].contentEditable = 'false';
    editables[2].contentEditable = 'false';
    // Change Button Text and Color
    editBtn.innerHTML = 'Enable Editing';
    editBtn.style.backgroundColor = '#F96';
    // Save the data in localStorage 
    for (var i = 0; i < editables.length; i++) {
      localStorage.setItem(editables[i].getAttribute('id'), editables[i].innerHTML);
    }
  }
});
    </script>
</body>

</html>
  • 0
    Не могли бы вы уточнить, что вы подразумеваете под «это не сохраняет в настоящий HTML-код»? Вы имеете в виду, что ваш javascript не изменяет HTML, как вы ожидаете, или вы хотите, чтобы этот код был только HTML?
  • 0
    Например, когда вы нажимаете «сохранить», он экспортирует новый файл с изменениями.
Показать ещё 13 комментариев
Теги:
edit

1 ответ

0

Вы захотите использовать что-то вроде функции downloadInnerHtml, как описано здесь. В идеале вам, вероятно, также захочется вырезать тег сценария и атрибут редактирования контента перед экспортом, потому что вы не хотите, чтобы конечная страница html редактировалась

Ещё вопросы

Сообщество Overcoder
Наверх
Меню