我有两个tab控件:一个用来插入HTML文本,另一个用来插入CSS文本。然后我有一个预览来查看输出(HTML + CSS)。问题是,在预览中我只显示内容的HTML,但我不显示内容的CSS。
的数据
我在JavaScript中使用这个函数:
function showPreview() {
var htmlContent = document.getElementById("editor").innerText;
var cssContent = "<style>" + document.getElementById("cssContent").value + "</style>";
var frame = document.getElementById("preview-window");
// var jsContent = "<scri" + "pt>" + document.getElementById("jsCode").value + "</scri" + "pt>";
// Create a data URL with the HTML content
var dataURL = "data:text/html;charset=utf-8," + encodeURIComponent(htmlContent + cssContent);
// Set the iframe src attribute to the data URL
frame.src = dataURL;
}
showPreview()
字符串
我做错了什么?怎么解决?
代码嗅探器
function showPreview() {
var htmlContent = document.getElementById("editor").innerText;
var cssContent = "<style>" + document.getElementById("cssContent").value + "</style>";
// var jsContent = "<scri" + "pt>" + document.getElementById("jsCode").value + "</scri" + "pt>";
var frame = document.getElementById("preview-window");
// Create a data URL with the HTML content
var dataURL = "data:text/html;charset=utf-8," + encodeURIComponent(htmlContent + cssContent);
// Set the iframe src attribute to the data URL
frame.src = dataURL;
}
showPreview()
#editor,
#cssContent {
width: 456px;
height: 267px;
padding: 10px;
background-color: #d8d8d8;
color: rgb(0, 0, 0);
font-size: 14px;
font-family: monospace;
white-space: pre;
}
<!-- Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://getbootstrap.com/docs/5.3/assets/css/docs.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
<div class="container">
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">HTML</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">CSS</button>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
<div id="editor" contenteditable="true" oninput="showPreview();"><div>This is a Div</div>
</div>
</div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
<div id="cssContent" contenteditable="true" oninput="showPreview()"><style> div { background-color: blue; color: white; } </style>
</div>
</div>
<h3>PREVIEW</h3>
<div class="preview-area">
<iframe id="preview-window"></iframe>
</div>
</div>
1条答案
按热度按时间0x6upsns1#
修改了标签ID和咏叹调标签,以匹配您正在构建的内容。
在将
<style>
移植到css
时,不要在编辑器中硬编码<style>
,只在变量中使用这些标记,否则最终会有两次<style><style>
。正确使用
Element.textContent
而不是.innerText
或.value
(因为您正在DIV元素上使用contenteditable属性)。没有经过彻底测试,但应该给予您一个坚定的观点来继续前进:你可能会感兴趣:Make a simple code editor