编辑,保存,自修改HTML文档; 格式生成的HTML,JavaScript

编辑,保存,自修改HTML文档; 格式生成的HTML,JavaScript

错误:字符串转义,格式化htmljs由初始编辑生成,保存htmljs

例如,

a)如果在本地浏览器中打开“saveFile.html”;

b)输入“abc” textarea;

c)单击save file按钮;

d)单击SaveSave 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)Bug:第二个结果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();};

在第26行生成,“saveFile.html”

+ "var clone = '<!doctype html>'+ document.documentElement.outerHTML.replace(/<textarea>.*<.+textarea>/, '<textarea>'+document.getElementsByTagName('textarea')[0].value+'<\/textarea>');"



慕村9548890
浏览 615回答 2
2回答

三国纷争

我不确定是什么打破了第三代克隆,因此它导致js信息输出到页面,但是使用实际文档对象来克隆/操作原始文件并输出其内容可能会更好Blob对象的字符串。例如,我使用您的基本saveFile.html进行了测试,并进行了以下更改://remove original clone var and replace with:var clone = document.cloneNode(true);// grab textarea elements from both original document and clone:var doc_input = document.getElementsByTagName("textarea")[0];var clone_input = clone.getElementsByTagName("textarea")[0];// set clone textarea's innerHTML to current textarea value:clone_input.innerHTML = doc_input.value;// use outerHTML of clone.documentElement to get string for Blobvar clone_string = [clone.documentElement.outerHTML];var file = new Blob([clone_string], {"type":"text/html"});我看到的唯一缺点是:这可能很难扩展到更通用的框架,用于生成当前加载的HTML页面状态的“实时HTML文件”(尽管它不应该比您的示例方法更复杂)。返回的字符串clone.documentElement.outerHTML似乎将文档类型声明放到一个简单元素中,以便:不在输出字符串中。你可以使用类似的东西:var clone_string = ["<!doctype html>" + clone.documentElement.outerHTML];作为一种解决方法。或者,对于更强大的东西:var doc_doctype = new XMLSerializer().serializeToString(document.doctype);var clone_string = [doc_doctype + clone.documentElement.outerHTML];
打开App,查看更多内容
随时随地看视频慕课网APP