我正在制作一个简单的代码编辑器,用于在线和离线编写HTML/CSS/JS文件。到目前为止,一切都进行得很顺利,但我正在努力弄清楚如何准确预览一个完整的HTML文档,该文档被输入到编辑器、doctype和所有文件中。到目前为止,对于编辑器,您可以使用“”打开您在新窗口中键入的文档。
但是,让它按照我希望的方式工作的唯一方法是让我使用一个base64编码的HTML,它允许我将整个文档输出到一个窗口、doctype等等。
如果我说,previewWinRef.document.write(editor.value)
,那是行不通的。在尝试之后,它所做的就是将其附加到当前文档中。
如何清除预览窗口的全部内容,并在不使用base64编码的情况下将编辑器文本区域的整个值写入预览窗口?
编辑:下面是代码中正在发生的事情:
editor.addEventListener('keydown',function(event){
setTimeout(function(){
if(previewWinRef){
previewWinRef.location = "data:text/html;base64,"+Base64.encode(editor.value);
}
},100);
});
基本上,每次你按下一个键的时候,我都会刷新结果,只有当你打开预览窗口的时候,你才能打开“文件->打开新标签”。由于某些原因,我似乎无法访问预览窗口的文档,即使编辑器窗口创建了它,而且它只是一个数据URL?窗口{} 屏幕截图
这是编辑。
发布于 2014-11-04 19:44:17
试试这个:
var win = window.open("about:blank", "title");
win.document.getElementsByTagName("html")[0].innerHTML = document.body.getElementsByTagName("textarea")[0].value;
发布于 2014-11-04 19:46:03
原答案已更新。
您可以从新选项卡中使用document对象的documentElement
属性。这里的问题是,如果将新选项卡的window.location
域设置为另一个站点(或者在您的例子中是一个数据字符串),一些浏览器会抱怨相同来源的策略冲突。
previewWinRef = window.open("about:blank");
previewWinRef.document.documentElement.innerHTML = editor.value;
https://stackoverflow.com/questions/26743452
复制相似问题