我正在尝试将CKEditor与Chrome应用程序(包App)集成。但它不起作用,有没有人尝过这个?
我试图创建一个示例应用程序,有两个按钮"创建编辑器"和"删除编辑器",'创建编辑器'按钮应该打开一个编辑器,用户可以使用ckEditor创建一些内容(html /文本)。点击"删除编辑器",应关闭编辑器,内容应显示在文本"编辑内容"在同一页上。
我正在使用angularJS进行脚本编写。
这是 index.html
的代码段 <div lang="en" ng-app="demoApp" ng-controller="MainCtrl" >
<p>Click the buttons to create and remove a CKEditor instance.</p>
<p>
<input ng-click="createEditor()" type="button" value="Create Editor">
<input ng-click="removeEditor()" type="button" value="Remove Editor">
</p>
<!-- This div will hold the editor. -->
<div id="editor">
</div>
<div id="contents" style="display: none">
<p>
Edited Contents:
</p>
<!-- This div will be used to display the editor contents. -->
<div id="editorcontents">
</div>
</div>
</div>
此处是 main.js
的代码var demoApp = angular.module('demoApp', []);
var MainCtrl = function($scope) {
var editor, html = '';
$scope.createEditor =function() {
if ( editor )
return;
// Create a new editor inside the <div id="editor">, setting its value to html
var config = {};
editor = CKEDITOR.appendTo( 'editor', config, html );
}
$scope.removeEditor = function() {
if ( !editor )
return;
document.getElementById( 'editorcontents' ).innerHTML = html = editor.getData();
document.getElementById( 'contents' ).style.display = '';
// Destroy the editor.
editor.destroy();
editor = null;
}
// $scope.Wrapper = Serv;
}
demoApp.controller('MainCtrl',MainCtrl);
如果我将此示例作为Web应用程序运行,则运行正常。但当我将其转换为打包的chrome应用程序时,它会在调试控制台上抛出错误
document.open() is not available in packaged apps.extensions::platformApp:17
Uncaught Error: document.write() is not available in packaged apps.extensions::platformApp:31
请帮忙。
答案 0 :(得分:1)
看起来问题可能是在此环境中无法访问某些API方法。一些谷歌搜索引导我this link:
新的打包应用程序,特别是那些带有manifest_version:2的应用程序无法直接使用document.write或在脚本元素之间加载脚本。
您可以使用启用了所有这些功能的沙盒,因此请查看http://developer.chrome.com/trunk/apps/app_external.html#external
CKEditor需要访问<{>>经典编辑器使用的wysiwygarea plugin中的document.write
。作为最简单的解决方法,您可以尝试使用inline editor来查看是否有帮助(如果您需要具有固定UI的内联编辑器,请检查第二个示例here)。