具有javascript效果的Jquery实时预览
我正在做一个你可以写一个句子的页面,它在右边显示的是精心设计的。我使用Jquery live preview。具有javascript效果的Jquery实时预览,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在做一个你可以写一个句子的页面,它在右边显示的是精心设计的。我使用Jquery live preview。但我的设计似乎只有在编写并再次加载页面后才能加载。知道如何允许直接生成设计吗?(要查看效果,请编写一些内容并再次加载页面)检查此项 这是我的javascript $(function() { $('textarea.source').livePreview({ previewElement:
但我的设计似乎只有在编写并再次加载页面后才能加载。知道如何允许直接生成设计吗?
(要查看效果,请编写一些内容并再次加载页面)
检查此项
这是我的javascript
$(function() {
$('textarea.source').livePreview({
previewElement: $('p#demo'),
allowedTags: ['p', 'strong', 'br', 'em', 'strike'],
interval: 20
});
});
window.onload = function wordsinblocks(self) {
var demo = document.getElementById("demo"),
initialText = demo.textContent,
wordTags = initialText.split(" ").map(function(word){
return '<span class="word">' + word + '</span>';
});
demo.innerHTML = wordTags.join('');
self.disabled = true;
fitWords();
window.addEventListener('resize', fitWords);
}
function fitWords(){
var demo = document.getElementById("demo"),
width = demo.offsetWidth,
sizes = [7.69230769230769,23.07692307692307,46.15384615384614, 100],
calculated = sizes.map(function(size){return width*size/100}),
node,
i,
nodeWidth,
match,
index;
for (i=0;i<demo.childNodes.length;i++){
node = demo.childNodes[i];
node.classList.remove('size-1','size-2','size-3','size-4');
nodeWidth = node.clientWidth;
match = calculated.filter(function(grid){
return grid >= nodeWidth;
})[0];
index = calculated.indexOf(match);
node.classList.add( 'size-' + (index+1));
}
}
$(函数(){
$('textarea.source').livePreview({
预览版:$('p#demo'),
允许标记:['p'、'strong'、'br'、'em'、'STRINK'],
间隔时间:20
});
});
window.onload=函数字sinblocks(self){
var demo=document.getElementById(“demo”),
initialText=demo.textContent,
wordTags=initialText.split(“”).map(函数(word){
返回“”+单词+“”;
});
demo.innerHTML=wordTags.join(“”);
self.disabled=true;
fitWords();
window.addEventListener('resize',fitWords);
}
函数fitWords(){
var demo=document.getElementById(“demo”),
宽度=demo.offsetWidth,
尺寸=[7.69230769230769,23.07692307692307,46.15384615384614,100],
计算=大小.map(函数(大小){返回宽度*大小/100}),
节点,
我
点头,
匹配,
指数
对于(i=0;i=nodeWidth;
})[0];
索引=计算得出的。indexOf(匹配);
node.classList.add('size-'+(index+1));
}
}
您只能在窗口上运行wordsinblocks()
函数。pageload
,但您必须在更新文本时运行它们。只需分离函数并在reloadview
上调用它即可
(function($) {
$.fn.livePreview = function(options) {
// [...]
textarea.reloadPreview = function() {
// [...]
wordsinblocks(self);
};
// [...]
});
};
// [...]
})(jQuery);
function wordsinblocks(self) {
var demo = document.getElementById("demo"),
initialText = demo.textContent,
wordTags = initialText.split(" ").map(function(word) {
return '<span class="word">' + word + '</span>';
});
demo.innerHTML = wordTags.join('');
self.disabled = true;
fitWords();
window.addEventListener('resize', fitWords);
}
// [...]
window.onload = wordsinblocks(self);
// [...]
(函数($){
$.fn.livePreview=函数(选项){
// [...]
textarea.reloadPreview=函数(){
// [...]
字块(self);
};
// [...]
});
};
// [...]
})(jQuery);
功能字块(自身){
var demo=document.getElementById(“demo”),
initialText=demo.textContent,
wordTags=initialText.split(“”).map(函数(word){
返回“”+单词+“”;
});
demo.innerHTML=wordTags.join(“”);
self.disabled=true;
fitWords();
window.addEventListener('resize',fitWords);
}
// [...]
window.onload=wordsinblocks(self);
// [...]
工作小提琴:
我相信http://www.o-y-o.fr/simon/writer/src/jquery.livepreview.js
是一个交叉引用
您可以像下面那样直接将jquery.livepreview.js
添加到您的js
或使用本地/CDN引用
/*
*LivePreview jQuery插件v1.0
*
*版权所有(c)2009 Phil Haack,http://haacked.com/
*根据麻省理工学院许可证授权。
*/
(函数($){
$.fn.livePreview=函数(选项){
var opts=$.extend({},$.fn.livePreview.defaults,options);
var previewMaxIndex=opts.previewElement.length-1;
var allowedTagsRegExp=new RegExp(“(/?”+opts.allowedTags.join(“|”)+”)(\\s+.*?”,“g”);
返回此。每个函数(i){
var textarea=$(此值);
var preview=$(opts.previewElement[Math.min(i,previewMaxIndex)];
textarea.handleKeyUp=函数(){
textarea.unbind('keyup',textarea.handleKeyUp);
如果(!preview.updateingpreview){
preview.updateingpreview=true;
setTimeout(函数(){
textarea.reloadPreview()
},选择时间间隔);
}
返回false;
};
textarea.htmlUnencode=函数{
返回s.replace(//&/g,“&;”)。replace(//g,”);
};
textarea.reloadPreview=函数(){
var previewString=this.val();
如果(previewString.length>0){
previewString=this.htmlUnencode(previewString);
previewString=previewString.replace(opts.paraRegExp,“$1$2”;
previewString=previewString.replace(opts.lineBreakRegExp,“$1
$2”);
previewString=previewString.replace(allowedTagsRegExp,“”);
}
试一试{
//jquery 1.3.2中的一个bug的解决方法,该bug在1.4中已修复
预览[0]。innerHTML=previewString;
}捕获(e){
警报(“抱歉,此处不允许在中插入块元素。”);
}
preview.updateingpreview=false;
this.bind('keyup',this.handleKeyUp);
};
textarea.reloadPreview();
});
};
$.fn.livePreview.defaults={
paraRegExp:new RegExp((.*)\n\n([^.*\n\n].*),“g”),
lineBreakRegExp:new RegExp((.*)\n([^.*\n].*),“g”),
允许标记:['a','b','strong','blockquote','p','i','em','u','STREAK','super','sub','code'],
间隔时间:80
};
})(jQuery);
/*你在这行下面编码吗*/
$(函数(){
$('textarea.source').livePreview({
预览版:$('p#demo'),
允许标记:['p'、'strong'、'br'、'em'、'STRINK'],
间隔时间:20
});
});
window.onload=函数字sinblocks(self){
var demo=document.getElementById(“demo”),
initialText=demo.textContent,
wordTags=initialText.split(“”).map(函数(word){
返回“”+单词+“”;
});
demo.innerHTML=wordTags.join(“”);
self.disabled=true;
fitWords();
window.addEventListener('resize',fitWords);
}
函数fitWords(){
var demo=document.getElementById(“demo”),
宽度=demo.offsetWidth,
尺寸=[7.69230769230769、23.07692307692307、46.15384615384614、100],
计算=大小。映射(函数(大小){
返回宽度*大小/100
}),
节点,
我
点头,
匹配,
指数
对于(i=0;i=节点宽度;
})[0];
指数=c