如何控制 CKEditor API 在哪里打开文件浏览器浏览网址的新窗口



MVC5, CKEditor Custom File Manager API

我的界面运行良好,但是当我单击"图像"按钮选择要插入的图像时,用于选择文件的新窗口将显示在我的系统的主显示器上(运行 4 台显示器)。 因此,如果我使用监视器 3 进行在线编辑,则必须转到主监视器来选择图像会有点分散注意力。 最好在当前窗口的顶部打开新窗口。

我不知道如何解决这个问题。 我无法轻松找到为此的 CKEditor 配置设置,并且我不明白如何强制视图打开或不在特定位置打开。

这是我调用 CKEditor 的设置脚本:

@Section Scripts
<script src="~/scripts/ckeditor/ckeditor.js"></script>
<script>
    CKEDITOR.replace('Model.UserPost.Body', {
        filebrowserBrowseUrl: '/BlogsAndForums/UserPost/ImageDisplay?AnchorPostID=' + @Model.AnchorPostID, //This line routes to the ImageDisplay method and view.  Needs more configuration
        toolbarGroups: [  // Define the toolbar groups as it is a more accessible solution.
            { "name": "basicstyles", "groups": ["basicstyles"] },
            { "name": "links", "groups": ["links"] },
            { "name": "paragraph", "groups": ["list", "blocks"] },
            { "name": "document", "groups": ["mode"] },
            { "name": "insert", "groups": ["insert"] },
            { "name": "styles", "groups": ["styles"] },
            { "name": "about", "groups": ["about"] }
        ],
        removeButtons: 'Underline,Strike,Subscript,Superscript,Anchor,Styles,Specialchar' // Remove the redundant buttons from toolbar groups defined above.
    });
</script>
@Scripts.Render("~/bundles/jqueryval")
End Section

ImageDisplay 方法(见于文件浏览器BrowseUrl:spec)(1)显示可供选择的图像列表。 (2)单击图像后,它(3)关闭并返回到CKEditor。 (4)图像的URL已填充,之后一切都很好。

我遇到的唯一问题是图像显示视图在我的显示器上显示的位置。

这个相关问题解释了如何在右侧桌面(显示器)中打开弹出窗口。这一切都与设置适当的window.open()选项有关。


现在困难的部分。 理论上应该可以通过editor.config.fileBrowserWindowFeatures.现实情况是,打开弹出窗口(window.open()包装器)的弹出窗口插件实现得非常糟糕,以至于它覆盖了您在配置中设置的任何几何图形。

它甚至不会为弹出窗口返回新的窗口处理程序。

所以基本上你无能为力,除了(这是一个非常非常讨厌的黑客):

var org = window.open;
window.open = function() { 
  var args = Array.prototype.slice.call(arguments, arguments); 
  console.log( args ); 
  args[ 2 ] = args[ 2 ].replace( /height=d+/g, 'height=100' ); 
  return org.apply( window, args); 
}

我在CKEditor错误跟踪器上创建了一个问题。希望它能使插件变得平滑。

相关内容

  • 没有找到相关文章

最新更新