好的,首先,我不是一个经验丰富的程序员。我的领域主要是HTML和CSS,所以我有点卡在这里,我在网上搜索了高低,找不到我需要的;无论是我的措辞不好还是缺乏信息,我不确定,哈哈。
现场版
HTML
<select ONCHANGE="document.getElementById('display-inner').src = this.options[this.selectedIndex].value">
<option value="http://tessisamess.com/freeedit.html">Free Edit</option>
<option value="http://tessisamess.com/completestyle.html">Complete Style</option>
<option value="http://tessisamess.com/generator.html">Generator</option>
查询
$(函数(){ 函数变化(){ var iFrame = document.getElementById('display-inner'); 变量 iFrameBody; 如果(iFrame.contentDocument) { // FF iFrameBody = iFrame.contentDocument.getElementsByTagName('body')[0]; } 否则如果(iFrame.contentWindow) { // IE iFrameBody = iFrame.contentWindow.document.getElementsByTagName('body')[0]; } iFrameBody.innerHTML = document.getElementById('input-inner').value; } });
我想要完成的工作:
我正在为我通常为其创建布局的用户创建一个实时编辑器,并且我有自由编辑模式和保存功能,所有这些都可以正常工作。我也有我的两个基本布局,它们经常被上传并显示在 iframe 中,你可以从下拉列表中调用布局或自由编辑,以显示在右侧,在编辑器旁边。
这里的目标是让您能够单击三种模式中的任何一种,然后在左侧编码并查看您的更新影响右侧 iframe 中已有的内容,而不是清除它并将其替换为您的 textarea 内容(即它目前的作用。)
什么需要起作用,什么不能起作用:
当您单击 Complete Style 或 Generator 时,textarea(左)需要显示人们用来设置每个布局样式的基本代码。当您开始编辑该侧时,无论是使用为您生成的代码,还是将其替换为预制的布局编辑,这些更改都会影响它连接到右侧的 iframe。(例如:添加背景图片body
会改变 iframe 中的页面背景,等等。)
目的:
我将其用作一种工具,为经常在网站上使用我的免费布局的用户提供使用该网站非常过时的资源来编辑它们的麻烦。我希望他们能够输入我的自定义 CSS 并随意编辑它,以便他们可以将其带回网站并在他们的实际期刊上实施。
请注意,如果需要,我可以更改它已经起作用的方式。我宁愿它正常工作,也不愿坚持我已经拥有的东西。我并不是真的想上传 TinyMCE,但如果选项很渺茫,那么嘿。没有什么,对吧?
$(function() {
function change() {
var iFrame = document.getElementById('display-inner');
var iFrameBody;
if ( iFrame.contentDocument )
{ // FF
iFrameBody = iFrame.contentDocument.getElementsByTagName('body')[0];
}
else if ( iFrame.contentWindow )
{ // IE
iFrameBody = iFrame.contentWindow.document.getElementsByTagName('body')[0];
}
iFrameBody.innerHTML = document.getElementById('input-inner').value;
}
});
$(function() {
function saveTextAsFile()
{
var textToWrite = document.getElementById('input-inner').value;
var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
var fileNameToSaveAs = "mycode_tessisamess.txt";
var downloadLink = document.createElement("a");
downloadLink.download = fileNameToSaveAs;
downloadLink.innerHTML = "Download File";
if (window.webkitURL != null)
{
// Chrome allows the link to be clicked
// without actually adding it to the DOM.
downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
}
else
{
// Firefox requires the link to be added to the DOM
// before it can be clicked.
downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
downloadLink.onclick = destroyClickedElement;
downloadLink.style.display = "none";
document.body.appendChild(downloadLink);
}
downloadLink.click();
}
var button = document.getElementById('save');
button.addEventListener('click', saveTextAsFile);
});
@import url(https://fonts.googleapis.com/css?family=Open+Sans);
::selection{background:#EAA2B9;}
::-moz-selection{background:#EAA2B9;}
body,html{height:100%;}
body{margin:0;}
#input, #display{display:inline-block;height:100%;vertical-align:top;overflow:hidden;}
#input{position:relative;background:#ddd url(http://i.imgur.com/wBSwx5F.jpg)center no-repeat fixed;width:35%;-webkit-box-shadow:inset -10px 0 10px -10px rgba(0,0,0,0.6);box-shadow:inset -10px 0 10px -10px rgba(0,0,0,0.6);}
#controls{font-family:Open Sans,Helvetica,arial,sans-serif;font-size:13px;text-align:right;height:24px;background:#fff;padding:7px;border-bottom:1px solid #ccc;-webkit-box-shadow:inset -10px 0 10px -10px rgba(0,0,0,0.6);box-shadow:inset -10px 0 10px -10px rgba(0,0,0,0.6);}
.c-button, select, option{background:#fff;cursor:pointer;border:1px solid rgba(0,0,0,0.3);border-radius:4px;padding:2px 10px;margin:0 2px;font-family:Open Sans,Helvetica,arial,sans-serif;}
#input-inner{position:absolute;bottom:4px;top:38px;width:97%;margin:0;background:transparent;border:none;padding:10px;color:#000;overflow:auto;}
input:focus, textarea:focus, select:focus, option:focus{outline:none;}
#display{width:65%;}
#display-inner{height:100%;overflow:auto;border:none;width:100%;}
#display-inner p{max-width:600px;display:block;margin:0 auto;padding:100px;text-align:justify;font-family:Open Sans,Helvetica,arial,sans-serif;line-height:150%;font-size:115%;color:#444;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<form id="input">
<div id="controls">Options:
<select ONCHANGE="document.getElementById('display-inner').src = this.options[this.selectedIndex].value">
<option value="http://tessisamess.com/freeedit.html">Free Edit</option>
<option value="http://tessisamess.com/completestyle.html">Complete Style</option>
<option value="http://tessisamess.com/generator.html">Generator</option>
</select>
<button type="button" value="save" id="save" class="c-button">save</button>
<input type="reset" class="c-button" value="clear">
</div>
<textarea id="input-inner" onkeyup="change();" placeholder="You are in Free Edit mode! You can paste your code here, or start coding from scratch.
To style a layout instead, select your base from the dropdown above, and start with the base CSS given to create a new layout, or replace it with the free layout coding you wish to edit.
All changes will appear on the righthand side as you make them."></textarea>
</form><!---
---><div id="display">
<iframe id="display-inner" src="http://tessisamess.com/freeedit.html">
</iframe>
</div>
</body>