Мотивация: https://stackoverflow.com/questions/28120689/create-self-modifying-html-page-on-boxРедактировать, сохранять, самомодифицировать HTML-документ; Формат генерируется HTML, JavaScript
Ошибка: String побег, форматирование html
, js
генерируется первоначальный отредактированы, сохранены html
, js
например,
а) если она открыта «saveFile.html "в локальном браузере;
b) тип "abc" в textarea
;
c) нажмите save file
кнопка;
d) щелчок Save
по телефону Save File
;
e) file-*[date according to universal time].html
сохранен на диске;
f) открыть file-*[date according to universal time].html
в браузере;
g) тип "def" в textarea
;
h) повторение d), e), f);
i) Ошибка: результат во втором file-*[date according to universal time].html
отображает textarea
, содержащий текстовое содержимое «abc def»; button
не отображается в html
:
// at rendered `html` from second `file-*[date according to universal time].html`
// `textarea` containing "abc def" displayed here ,
// `button` _not_ displayed ; following string displayed following `textarea`:
');"console.log(clone);var file = new Blob([clone], {'type':'text/html'});a.href = URL.createObjectURL(file);a.download = 'file-' + new Date().getTime() + '.html';a.click();};
генерируется на линии , "saveFile.html"
+ "var clone = '<!doctype html>'+ document.documentElement.outerHTML.replace(/<textarea>.*<.+textarea>/, '<textarea>'+document.getElementsByTagName('textarea')[0].value+'<\/textarea>');"
"saveFile.html" v 1.0.0
html, js
<!doctype html>
<html>
<!-- saveFile.html 1.0.0 2015 guest271314 edit, save `html` document -->
<head>
</head>
<body>
<textarea>
</textarea>
<button>save file</button>
<script type="text/javascript">
var saveFile = document.getElementsByTagName("button")[0];
var input = document.getElementsByTagName("textarea")[0];
var a = document.createElement("a");
saveFile.onclick = function(e) {
var clone = ["<!doctype html><head></head><body><textarea>"
+ input.value
+ "</textarea>"
+ "<button>save file</button>"
+ "<script type='text/javascript'>"
+ "var saveFile = document.getElementsByTagName('button')[0];"
+ "var input = document.getElementsByTagName('textarea')[0];"
+ "var a = document.createElement('a');"
+ "saveFile.onclick = function(e) {"
+ "var clone = '<!doctype html>'+ document.documentElement.outerHTML.replace(/<textarea>.*<.+textarea>/, '<textarea>'+document.getElementsByTagName('textarea')[0].value+'<\/textarea>');"
+ "console.log(clone);"
+ "var file = new Blob([clone], {'type':'text/html'});"
+ "a.href = URL.createObjectURL(file);"
+ "a.download = 'file-' + new Date().getTime() + '.html';"
+ "a.click();"
+ "};"
+ "</scr"+"ipt>"
+ "</body>"
+ "</html>"];
var file = new Blob([clone], {"type":"text/html"});
a.href = URL.createObjectURL(file);
a.download = "file-" + new Date().getTime() + ".html";
a.click();
};
</script>
</body>
</html>
Можете ли вы объяснить более четко и просто, что * должно происходить * против того, что на самом деле происходит? Может быть, дать лучший контекст и для общей концепции? – Anthony
@ Anthony Ожидаемый результат: сохраненный файл после 'click' on" save file "' button', при открытии должен вносить текстовый ввод в элемент 'textarea' из предыдущего документа' html', включая элемент '' 'sibling' button'. Контекст - это попытка создания самомодифицирующего, псевдополиморфного документа 'html', где изменения, сделанные в' textarea', сохраненные в одной версии, отображаются в следующей сохраненной версии. – guest271314