在线可视化编辑支持外链,支持html,php等
在线修改代码,源码只有一个html,其它外链都是Bootstrap的。
源码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>在线可视化编辑-踏雕上月</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="//cdn.bootcss.com/codemirror/5.2.0/codemirror.min.js"></script>
<link rel="stylesheet" href="//cdn.bootcss.com/codemirror/5.2.0/codemirror.min.css">
<script src="//cdn.bootcss.com/codemirror/5.2.0/mode/htmlmixed/htmlmixed.min.js"></script>
<script src="//cdn.bootcss.com/codemirror/5.2.0/mode/css/css.min.js"></script>
<script src="//cdn.bootcss.com/codemirror/5.2.0/mode/javascript/javascript.min.js"></script>
<script src="//cdn.bootcss.com/codemirror/5.2.0/mode/xml/xml.min.js"></script>
<script src="//cdn.bootcss.com/codemirror/5.2.0/addon/edit/closetag.min.js"></script>
<script src="//cdn.bootcss.com/codemirror/5.2.0/addon/edit/closebrackets.min.js"></script>
<!--[if lt IE 9]>
<script src="//cdn.bootcss.com/html5shiv/r29/html5.min.js"></script>
<![endif]-->
</head>
<body>
<style>
body{min-height:150px;padding-top:90px;background: #f6f6f6;}.container{width:98%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.CodeMirror{min-height:150px}#textareaCode{min-height:150px}#iframeResult{border:0!important;min-width:100px;width:100%;min-height:150px;background-color:#fff}@media screen and (max-width:768px){#textareaCode{height:300px}.CodeMirror{height:300px}#iframeResult{display: block;overflow: hidden;height:300px}.form-inline{padding:6px 0 2px 0}}.logo h1{background-image:url(SFGFGD.png);background-repeat:no-repeat;text-indent:-9999px;width:160px;height:39px;margin-top:10px;display:block}
</style>
<nav class="navbar navbar-default navbar-fixed-top" style="background: #96b97d;">
<div class="container">
<div class="navbar-header logo"><h1>
<a class="navbar-brand" target="_blank" href="https://www.zsxcool.com" style="color: #fff;">zsxcool.com</a></h1>
</div>
</div>
</nav>
<div class="container" >
<div class="row">
<div class="col-sm-12">
<div class="panel panel-default">
<div class="panel-heading">
<form class="form-inline">
<div class="row">
<div class="col-xs-6">
<button type="button" class="btn btn-default">源代码:</button>
</div>
<div class="col-xs-6 text-right">
<button type="button" class="btn btn-success" onclick="submitTryit()" id="submitBTN"><span class="glyphicon glyphicon-send"></span> 点击运行</button>
</div>
</div>
</form>
</div>
<div class="panel-body">
<textarea class="form-control" id="textareaCode" name="textareaCode"></textarea>
</div>
</div>
</div>
<div class="col-sm-12">
<div class="panel panel-default">
<div class="panel-heading"><form class="form-inline"> <button type="button" class="btn btn-default">运行结果</button></form></div>
<div class="panel-body"><div id="iframewrapper"></div></div>
</div>
</div>
</div>
</div>
<script>
var mixedMode = {
name: "htmlmixed",
scriptTypes: [{matches: /\/x-handlebars-template|\/x-mustache/i,
mode: null},
{matches: /(text|application)\/(x-)?vb(a|script)/i,
mode: "vbscript"}]
};
var editor = CodeMirror.fromTextArea(document.getElementById("textareaCode"), {
mode: mixedMode,
selectionPointer: true,
lineNumbers: false,
matchBrackets: true,
indentUnit: 4,
indentWithTabs: true
});
window.addEventListener("resize", autodivheight);
var x = 0;
function autodivheight(){
var winHeight=0;
if (window.innerHeight) {
winHeight = window.innerHeight;
} else if ((document.body) && (document.body.clientHeight)) {
winHeight = document.body.clientHeight;
}
//通过深入Document内部对body进行检测,获取浏览器窗口高度
if (document.documentElement && document.documentElement.clientHeight) {
winHeight = document.documentElement.clientHeight;
}
height = winHeight*0.3
editor.setSize('100%', height);
document.getElementById("iframeResult").style.height= height + "px";
}
function submitTryit() {
var text = editor.getValue();
var patternHtml = /<html[^>]*>((.|[\n\r])*)<\/html>/im
var patternHead = /<head[^>]*>((.|[\n\r])*)<\/head>/im
var array_matches_head = patternHead.exec(text);
var patternBody = /<body[^>]*>((.|[\n\r])*)<\/body>/im;
var array_matches_body = patternBody.exec(text);
var basepath_flag = 0;
var basepath = '';
if(basepath_flag) {
basepath = '<base href="//www.zsxcool.com/" target="_blank">';
}
if(array_matches_head) {
texttext = text.replace('<head>', '<head>' + basepath );
} else if (patternHtml) {
texttext = text.replace('<html>', '<head>' + basepath + '</head>');
} else if (array_matches_body) {
texttext = text.replace('<body>', '<body>' + basepath );
} else {
text = basepath + text;
}
var ifr = document.createElement("iframe");
ifr.setAttribute("frameborder", "0");
ifr.setAttribute("id", "iframeResult");
document.getElementById("iframewrapper").innerHTML = "";
document.getElementById("iframewrapper").appendChild(ifr);
var ifrw = (ifr.contentWindow) ? ifr.contentWindow : (ifr.contentDocument.document) ? ifr.contentDocument.document : ifr.contentDocument;
ifrw.document.open();
ifrw.document.write(text);
ifrw.document.close();
autodivheight();
}
submitTryit();
autodivheight();
</script>
</div></body>
</html>
必须 注册 为本站用户, 登录 后才可以发表评论!