TinyMCE内容在页面刷新时出现乱码

时间:2016-08-16 21:55:14

标签: javascript php jquery css tinymce

我遇到了TinyMCE的问题。似乎每当刷新页面时,垃圾字符都会插入到内容中。请注意,内容是从Word粘贴的。

我正在开发由其他人开发的CMS。当他们在系统的其他页面中使用TinyMCE时,似乎没有相同内容的此问题。我将发布该问题的屏幕截图以及TinyMCE如何在系统中调用的代码。基本上它会自动加载任何具有“wysiwyg”类的textarea。

粘贴的内容:

the content as pasted in

刷新后:

after refreshing

现在很少有垃圾字符,但是我已经刷新了它并且那些A和乱码的字符都到处都有,有时似乎会替换相当多的内容。

关于TinyMCE插件等有很多东西,但鉴于在系统的其他部分它工作正常,我正在做的事情没有,我想也许这就是我正在做的事情 - - 但这是CMS如何加载TinyMCE:

var tinymceSettings = {
    // Location of TinyMCE script
    script_url : '/include/core/plugins/tinymce/tiny_mce.js',
    entity_encoding : "numeric",
    cleanup : true,
    theme : "advanced",
    plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
    theme_advanced_buttons1 : "forecolor,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontsizeselect,|,cut,copy,pastetext,pasteword,|,bullist,numlist,|,anchor,link,unlink,image,media,|,code,fullscreen",
    theme_advanced_buttons2 : "",
    theme_advanced_buttons3 : "",
    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : true,
    content_css : "/admin/styles/wysiwyg.css",
    relative_urls : false,
    remove_script_host : true,
    file_browser_callback : "openKCFinder"
};

$(function() {
    $('.wysiwyg').tinymce(tinymceSettings);
});

以下是我在其中使用的文字区域:

        <tr><td colspan="2">
        <label for="body">Body</label>
        <textarea name="body" id="body" rows="20" cols="50" class="wysiwyg"><?php echo $order->getBody() ?></textarea>
        </td></tr>

现在将其保存在数据库中。奇怪的是,TinyMCE不会将其数据与body textarea同步,因此在单击页面上的Save Changes按钮时我不得不应用此代码:

$('#body').html(tinyMCE.activeEditor.getContent());
$.post("/price.php", $('#prnrequest').serialize(), function (data) {
    <?php if (ENVIRONMENT !== 'production') : ?>
    $xprev.html(data);
    <?php endif; ?>
        if (notifyUser) {
            alert('Changes saved.');
            $('#saveText').hide();
            $('#saveButtons').show();
            enableSubmitButton();
        }
}, 'json');

这里有一些影响文本区域的代码,不知道这可能是一个问题:

$('input:not(:file), select, textarea').change(function(event) {
    disableSubmitButton();
});

并且在表单提交时会发生这种情况,因为收件人需要转义所有特殊实体而不是自己(即必须&amp; copy;等等):

aq_submitHandler = function () {
    $('form#prnrequest').submit(function () {
        $('#body').html(escapeHtmlEntities(tinyMCE.activeEditor.getContent()));
        return true;
    });
}

和.ready电话:

$(function() {
    <?php if ($immediateDistribution) : ?>
    updateOrderInformation();
    <?php endif; ?>
    aq_submitHandler();
});

最后是escapeHtmlEntities函数:

escapeHtmlEntities = function (text) {
return text.replace(/[\u00A0-\u2666<>\&]/g, function(c) {
    return '&' + 
    (escapeHtmlEntities.entityTable[c.charCodeAt(0)] || '#'+c.charCodeAt(0)) + ';';
});
};

// all HTML4 entities as defined here:     http://www.w3.org/TR/html4/sgml/entities.html
// added: amp, lt, gt, quot and apos
escapeHtmlEntities.entityTable = {
34 : 'quot', 
38 : 'amp', 
39 : 'apos', 
60 : 'lt', 
62 : 'gt', 
160 : 'nbsp', 
161 : 'iexcl', 
162 : 'cent', 
163 : 'pound', 
164 : 'curren', 
165 : 'yen', 
166 : 'brvbar', 
167 : 'sect', 
168 : 'uml', 
169 : 'copy', 
170 : 'ordf', 
171 : 'laquo', 
172 : 'not', 
173 : 'shy', 
174 : 'reg', 
175 : 'macr', 
176 : 'deg', 
177 : 'plusmn', 
178 : 'sup2', 
179 : 'sup3', 
180 : 'acute', 
181 : 'micro', 
182 : 'para', 
183 : 'middot', 
184 : 'cedil', 
185 : 'sup1', 
186 : 'ordm', 
187 : 'raquo', 
188 : 'frac14', 
189 : 'frac12', 
190 : 'frac34', 
191 : 'iquest', 
192 : 'Agrave', 
193 : 'Aacute', 
194 : 'Acirc', 
195 : 'Atilde', 
196 : 'Auml', 
197 : 'Aring', 
198 : 'AElig', 
199 : 'Ccedil', 
200 : 'Egrave', 
201 : 'Eacute', 
202 : 'Ecirc', 
203 : 'Euml', 
204 : 'Igrave', 
205 : 'Iacute', 
206 : 'Icirc', 
207 : 'Iuml', 
208 : 'ETH', 
209 : 'Ntilde', 
210 : 'Ograve', 
211 : 'Oacute', 
212 : 'Ocirc', 
213 : 'Otilde', 
214 : 'Ouml', 
215 : 'times', 
216 : 'Oslash', 
217 : 'Ugrave', 
218 : 'Uacute', 
219 : 'Ucirc', 
220 : 'Uuml', 
221 : 'Yacute', 
222 : 'THORN', 
223 : 'szlig', 
224 : 'agrave', 
225 : 'aacute', 
226 : 'acirc', 
227 : 'atilde', 
228 : 'auml', 
229 : 'aring', 
230 : 'aelig', 
231 : 'ccedil', 
232 : 'egrave', 
233 : 'eacute', 
234 : 'ecirc', 
235 : 'euml', 
236 : 'igrave', 
237 : 'iacute', 
238 : 'icirc', 
239 : 'iuml', 
240 : 'eth', 
241 : 'ntilde', 
242 : 'ograve', 
243 : 'oacute', 
244 : 'ocirc', 
245 : 'otilde', 
246 : 'ouml', 
247 : 'divide', 
248 : 'oslash', 
249 : 'ugrave', 
250 : 'uacute', 
251 : 'ucirc', 
252 : 'uuml', 
253 : 'yacute', 
254 : 'thorn', 
255 : 'yuml', 
402 : 'fnof', 
913 : 'Alpha', 
914 : 'Beta', 
915 : 'Gamma', 
916 : 'Delta', 
917 : 'Epsilon', 
918 : 'Zeta', 
919 : 'Eta', 
920 : 'Theta', 
921 : 'Iota', 
922 : 'Kappa', 
923 : 'Lambda', 
924 : 'Mu', 
925 : 'Nu', 
926 : 'Xi', 
927 : 'Omicron', 
928 : 'Pi', 
929 : 'Rho', 
931 : 'Sigma', 
932 : 'Tau', 
933 : 'Upsilon', 
934 : 'Phi', 
935 : 'Chi', 
936 : 'Psi', 
937 : 'Omega', 
945 : 'alpha', 
946 : 'beta', 
947 : 'gamma', 
948 : 'delta', 
949 : 'epsilon', 
950 : 'zeta', 
951 : 'eta', 
952 : 'theta', 
953 : 'iota', 
954 : 'kappa', 
955 : 'lambda', 
956 : 'mu', 
957 : 'nu', 
958 : 'xi', 
959 : 'omicron', 
960 : 'pi', 
961 : 'rho', 
962 : 'sigmaf', 
963 : 'sigma', 
964 : 'tau', 
965 : 'upsilon', 
966 : 'phi', 
967 : 'chi', 
968 : 'psi', 
969 : 'omega', 
977 : 'thetasym', 
978 : 'upsih', 
982 : 'piv', 
8226 : 'bull', 
8230 : 'hellip', 
8242 : 'prime', 
8243 : 'Prime', 
8254 : 'oline', 
8260 : 'frasl', 
8472 : 'weierp', 
8465 : 'image', 
8476 : 'real', 
8482 : 'trade', 
8501 : 'alefsym', 
8592 : 'larr', 
8593 : 'uarr', 
8594 : 'rarr', 
8595 : 'darr', 
8596 : 'harr', 
8629 : 'crarr', 
8656 : 'lArr', 
8657 : 'uArr', 
8658 : 'rArr', 
8659 : 'dArr', 
8660 : 'hArr', 
8704 : 'forall', 
8706 : 'part', 
8707 : 'exist', 
8709 : 'empty', 
8711 : 'nabla', 
8712 : 'isin', 
8713 : 'notin', 
8715 : 'ni', 
8719 : 'prod', 
8721 : 'sum', 
8722 : 'minus', 
8727 : 'lowast', 
8730 : 'radic', 
8733 : 'prop', 
8734 : 'infin', 
8736 : 'ang', 
8743 : 'and', 
8744 : 'or', 
8745 : 'cap', 
8746 : 'cup', 
8747 : 'int', 
8756 : 'there4', 
8764 : 'sim', 
8773 : 'cong', 
8776 : 'asymp', 
8800 : 'ne', 
8801 : 'equiv', 
8804 : 'le', 
8805 : 'ge', 
8834 : 'sub', 
8835 : 'sup', 
8836 : 'nsub', 
8838 : 'sube', 
8839 : 'supe', 
8853 : 'oplus', 
8855 : 'otimes', 
8869 : 'perp', 
8901 : 'sdot', 
8968 : 'lceil', 
8969 : 'rceil', 
8970 : 'lfloor', 
8971 : 'rfloor', 
9001 : 'lang', 
9002 : 'rang', 
9674 : 'loz', 
9824 : 'spades', 
9827 : 'clubs', 
9829 : 'hearts', 
9830 : 'diams', 
338 : 'OElig', 
339 : 'oelig', 
352 : 'Scaron', 
353 : 'scaron', 
376 : 'Yuml', 
710 : 'circ', 
732 : 'tilde', 
8194 : 'ensp', 
8195 : 'emsp', 
8201 : 'thinsp', 
8204 : 'zwnj', 
8205 : 'zwj', 
8206 : 'lrm', 
8207 : 'rlm', 
8211 : 'ndash', 
8212 : 'mdash', 
8216 : 'lsquo', 
8217 : 'rsquo', 
8218 : 'sbquo', 
8220 : 'ldquo', 
8221 : 'rdquo', 
8222 : 'bdquo', 
8224 : 'dagger', 
8225 : 'Dagger', 
8240 : 'permil', 
8249 : 'lsaquo', 
8250 : 'rsaquo', 
8364 : 'euro'
};

在最后一个那么长的时间里,我没有为每一行添加额外的空格来缩小它在代码中的方式。

现在试图解决这个问题一周,并且不知道问题是什么。也无法在网上找到任何关于它的信息。

这是这个项目的真正瓶颈,我们将非常感谢任何帮助。谢谢!

0 个答案:

没有答案