Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 崩塌及;nbsp;在a<;p>;标签_Javascript_Html_Css_Tinymce - Fatal编程技术网

Javascript 崩塌及;nbsp;在a<;p>;标签

Javascript 崩塌及;nbsp;在a<;p>;标签,javascript,html,css,tinymce,Javascript,Html,Css,Tinymce,我使用TinyMCE允许我的用户创建他们自己的网页。我的目标是让人们在编辑器中键入的内容与它发布的页面完全相同。我几乎明白了,除了Tinymce如果用户在句子之间加上两个空格,就会添加一个。显然,在编辑器中,如果位于一行的开头,那么它会折叠,这样每一行都会紧靠编辑器的左侧。但是,在完成的页面中,这会在“p”标记的行首处创建一个空格。我可以去掉,但是在编辑器中它的外观与最后一页不同 有人知道在p标记的行首折叠的方法吗?或者有没有一种方法可以在TinyMCE中对其进行不同的格式化,从而使编辑器和最终

我使用TinyMCE允许我的用户创建他们自己的网页。我的目标是让人们在编辑器中键入的内容与它发布的页面完全相同。我几乎明白了,除了Tinymce如果用户在句子之间加上两个空格,就会添加一个
。显然,在编辑器中,如果
位于一行的开头,那么它会折叠,这样每一行都会紧靠编辑器的左侧。但是,在完成的页面中,这会在“p”标记的行首处创建一个空格。我可以去掉
,但是在编辑器中它的外观与最后一页不同


有人知道在
p
标记的行首折叠
的方法吗?或者有没有一种方法可以在TinyMCE中对其进行不同的格式化,从而使编辑器和最终页面看起来完全相同?谢谢

不可能“崩溃”它。您必须使用正则表达式或字符串替换来删除它

正如迪奥多斯所说,你不能折叠一个字符,如果你想摆脱它,你必须把它去掉。 许多浏览器会将一行中输入的多个空格“压缩”到一个空格中。这意味着即使用户输入了15个空间,也只有一个可见空间。这就是tinymce进入受保护空间的原因。现在,输入的所有空间都将以不同类型空间的价格显示

更新:插入跨度并检查其位置的示例代码。您将对“左”的值进行汇总

        var ed = this.editor, box = null;


        if ( $(ed.getBody()).find('p:first').css('line-height') != 'normal'){
            lineHeight = $(ed.getBody()).find('p:first').css('line-height') ;
        }
        else {
            lineHeight = $(ed.getBody()).find('p:first').css('min-height');
        }

        var lineHeight = lineHeight.substr(0, lineHeight.length -2 );//box.height;

        var rng = ed.selection.getRng();
        rng.collapse(true);

        bm = ed.selection.getBookmark();
        $marker = $(ed.getBody()).find('#'+bm.id);
        var elem = ed.getDoc().getElementById(bm.id+'_start');
        box = elem.getBoundingClientRect();


        var doc = ed.getDoc(),
            docElem = doc.documentElement,
            body = ed.getBody(),
            win = ed.getWin(),
            clientTop  = docElem.clientTop  || body.clientTop  || 0,
            clientLeft = docElem.clientLeft || body.clientLeft || 0,
            scrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,
            scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
            top  = box.top  + scrollTop  - clientTop,
            left = box.left + scrollLeft - clientLeft;

        // set Bookmark
        ed.selection.moveToBookmark(bm);

谢谢你。你比我先编辑:)谢谢你的洞察力。有没有一种方法可以感知角色何时处于新行的开头?这样我才能聪明地把它们去掉。另一方面,我又回到了把它们全部剥离出来,并根据用户输入的内容更改视觉外观。这是可能的,但有点棘手,例如,您必须插入一个空白的跨距,然后获取其位置。当你非常靠近左边时,你将处于一条新线的起点。查看我的更新答案,了解一些示例代码。这太棒了!好主意!