@Nick_Apex

Почему после сохранения узла html в localStorage его невозможно вставить на страницу?

Если перед тем как вставить узел записать его в localStorage, то в хроме вылазит ошибка "Uncaught TypeError: Failed to execute 'insertBefore' on 'Node': parameter 1 is not of type 'Node'."
var copydiv = document.getElementById('top-lighthouse');
		var copydiv = copydiv.cloneNode('true');

		localStorage['localMem'] = copydiv;
		copydiv = localStorage['localMem'];

		document.body.insertBefore(copydiv, document.body.firstChild);

51238301c66e492989a372fc2684e9dd.png
Почему так получается?
Нужно это для расширения под Google Chrome - надо куда то записать кусок кода, что бы после перезагрузки страницы его можно было вставить обратно. Если кто знает такую же простую альтернативу к̶а̶к̶ ̶м̶о̶и̶ ̶з̶н̶а̶н̶и̶я̶ ̶в̶ ̶J̶S̶ как эта - предлагайте)
  • Вопрос задан
  • 331 просмотр
Решения вопроса 1
PretorDH
@PretorDH
HTML5, CSS3, PHP, JS - люблю в чистом виде.
Узел это не код, это обьект.
Исходный код в виде строки хранится в свойстве этого обьекта innerHTML.
Сохрани свойство, и восстанавливай в свойство.

var copydiv = document.getElementById('top-lighthouse').innerHTML;

    localStorage['localMem'] = copydiv;
    copydiv = localStorage['localMem'];

   /*  document.body.insertBefore( copydiv, document.body.firstChild ). не годится*/
    document.body.firstChild.innerHTML = copydiv;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ivanq
@Ivanq
Знаю php, js, html, css
Потому что в localStorage можно писать только строки. Даже объекты записывают так:
localStorage.setItem("key", JSON.stringify(value));

Но Вы можете записывать не элемент, а само содержимое. Правда, не получится хранить обработчики и другую информацию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы