«сохранить» текущее состояние страницы с помощью JavaScript - PullRequest
5 голосов
/ 19 декабря 2010

То, что я пытаюсь сделать, - это создать функцию привязки URI для перерисовки / перерисовки / (назовите это как хотите) всей страницы

По сути, я хочу иметь возможность конвертировать любую страницу всхема URI, так что при переходе по такой ссылке я получаю всю страницу как есть, что-то вроде сохранения веб-страницы.Например, если бы мне нужно было редактировать страницу, и я хотел бы продолжить позже со всеми текстовыми областями, такими, какие они есть, и заполненными формами, или если я хочу сохранить чью-то (маленькую) страницу, не беспокоясь о том, что его сайт будет запущени без необходимости сохранять файлы на моем компьютере (я хочу использовать букмарклеты)

Вот что у меня есть:

html = '<html>' + document.documentElement.innerHTML + '</html>';
//html = html.replace(/"/g, '\\"');
a = document.createElement('a');
a.href = 'data:text/html;charset=utf-8,' + html;
a.innerHTML = 'click here';
document.body.appendChild(a);

Вы видите, что я пытаюсь сделать.Хорошо, теперь сложная часть как-то использует регулярное выражение для замены всех двойных кавычек, которые уже есть в двойных кавычках, но не те, которые не являются.

Например, если мы создаем страницу

<html><body>Testing</body></html>

и запускаем функцию достаточно раз, чтобы у нас возникли проблемы с третьей и ссылками.

Посмотрите, что я имею в виду: http://jsfiddle.net/AvSh3/3/

Ответы [ 3 ]

3 голосов
/ 19 декабря 2010

Используйте встроенную функцию escape ():

html = escape(html);
0 голосов
/ 20 декабря 2010

Это работает при тестировании на моей собственной странице:

a = document.createElement('a');
a.href = 'data:text/html;charset=utf-8,<html>' +
    escape(document.documentElement.innerHTML) + '</html>';
a.innerHTML = 'click here';
document.body.appendChild(a);

Я предполагаю, что это просто техническая часть jsBin / jsFiddle, но я понятия не имею, почему.В любом случае, если люди хотят использовать это для создания букмарклетов, вот ссылка:

....

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

javascript:a=document.createElement("a");a.href="data:text/html;charset=utf-8,<html>"+escape(document.documentElement.innerHTML)+"</html>";a.innerHTML="click here";document.body.appendChild(a);

В любом случае, с помощью этого забавного инструмента мы можем делать то, что делает Джон в первой ссылке здесь:

http://wundes.com/bookmarklets.html

0 голосов
/ 19 декабря 2010

Я переработал его в

var html = '<html>' + $("html").html() + '</html>';
$('<a></a>').html("click here")
.attr("href", 'data:text/html;charset=utf-8,' + escape(html))
.appendTo($("body"));

Что отображается неправильно, но при просмотре источника все выглядит правильно. Может быть, требуется какой-то другой специальный параметр?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...