具有javascript效果的Jquery实时预览

具有javascript效果的Jquery实时预览,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在做一个你可以写一个句子的页面,它在右边显示的是精心设计的。我使用Jquery live preview。但我的设计似乎只有在编写并再次加载页面后才能加载。知道如何允许直接生成设计吗?(要查看效果,请编写一些内容并再次加载页面)检查此项 这是我的javascript $(function() { $('textarea.source').livePreview({ previewElement:

我正在做一个你可以写一个句子的页面,它在右边显示的是精心设计的。我使用Jquery live preview。
但我的设计似乎只有在编写并再次加载页面后才能加载。知道如何允许直接生成设计吗?

(要查看效果,请编写一些内容并再次加载页面)
检查此项

这是我的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