2

我正在为一个相当简单的 CMS 集成 WYSIWYG 编辑器。我选择了 CKeditor 并使用“预览”按钮。这个东西就是在三大浏览器中不一致。(IE、Chrome 和 Firefox)。

如果你曾经使用过 CKeditor,你会知道在它附带的文件中有两个位置可以找到“preview.html”。这些是:

http://sitename/ckeditor/plugins/preview

http://sitename/ckeditor/_source/plugins/preview

后者还包含一个与预览插件相关的 plugin.js 文件,我觉得我的问题的答案在哪里。可以在此处找到此代码:

http://jsfiddle.net/keKLP/

只是为了让你能看到。现在的问题是默认情况下预览只是纯文本。因此,我编辑了 preview.html 页面,并将从编辑器中提取内容的代码封装在 HTML 中,包括样式表引用和图像路径。在 Firefox 中,这可以正常工作,但仅在 Firefox 中。在 chrome 和 IE 中,它没有样式,没有图像,什么都没有。当我查看它时,我注意到 Firefox 预览会打开一个指向实际地址的新窗口。地址为:

http://mysite.co.uk/ckeditor/plugins/preview/preview.html

其中 IE 和 Chrome 打开一个新窗口/标签指向:

about:blank

通过查看上面列出的 JavaScript 文件 (plugin.js),我可以看到它对 Firefox 的作用与其他浏览器不同。我已经更改了文件中几乎所有说“路径”或“URL”的内容,试图让它指向与其他浏览器中的 Firefox 相同的位置,而不是 about:blank。

但是我不是 JavaScript 专家,我觉得我对确切问题的理解不足。这让我发疯,任何人都可以指出我应该查看的那个文件中的一些 JavaScript,或者阐明这个问题吗?任何帮助是极大的赞赏。

4

2 回答 2

1

有一种可能的方法可以跟踪预览插件 .js 文件并尝试编辑它调用预览弹出窗口的方式。然而,这是冗长且有问题的,因为它在 Firefox 中似乎总是比任何其他浏览器都运行得更好。

我对此的解决方案是删除 ckeditor 并实施 TinyMCE。预览页面更容易编辑并且完全没有问题。

于 2012-09-17T10:23:42.777 回答
1

我解决了将我自己的自定义文件(css、js、meta 等)添加到 ckeditor.js 中的问题。我创建了一个包含 html 代码(带有链接、元、脚本)的字符串变量,如下所示:

var my_includefiles='<link href="http://assets.mydomain.com/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" /><link href="http://assets.mydomain.com/css/mainstyle.css" rel="stylesheet" type="text/css" charset="utf-8"/><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>';

我刚刚将我的 var 添加到这部分代码(_cke_htmlToLoad 的一部分):

a=a.config.docType+'<html dir="'+a.config.contentsLangDirection+'"><head>'+e+CKEDITOR.tools.buildStyleHtml(a.config.contentsCss)+my_includefiles+"<title>"+a.lang.preview.preview+"</title></head>"+(b+">")+a.getData()+"</body></html>"

之后,使用我自己的自定义样式和行为进行预览在 IE9、FF19、Opera12 中运行良好,但在 Chrome (25) 中运行良好,因此为了使其在 Chrome 中运行,我删除了 ckeditor.js 的这部分代码

CKEDITOR.env.webkit&&setTimeout(function(){f.body.innerHTML=f.body.innerHTML+""},0)

这解决了问题。我希望它有所帮助。

于 2013-03-26T17:01:40.917 回答