liuxiaolong
2019-05-09 0d1d88cdb668e75ea8609417ac18ae19947e9525
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
 
CKEDITOR.plugins.add( 'popup' );
 
CKEDITOR.tools.extend( CKEDITOR.editor.prototype,
{
    /**
     * Opens Browser in a popup. The "width" and "height" parameters accept
     * numbers (pixels) or percent (of screen size) values.
     * @param {String} url The url of the external file browser.
     * @param {String} width Popup window width.
     * @param {String} height Popup window height.
     * @param {String} options Popup window features.
     */
    popup : function( url, width, height, options )
    {
        width = width || '80%';
        height = height || '70%';
 
        if ( typeof width == 'string' && width.length > 1 && width.substr( width.length - 1, 1 ) == '%' )
            width = parseInt( window.screen.width * parseInt( width, 10 ) / 100, 10 );
 
        if ( typeof height == 'string' && height.length > 1 && height.substr( height.length - 1, 1 ) == '%' )
            height = parseInt( window.screen.height * parseInt( height, 10 ) / 100, 10 );
 
        if ( width < 640 )
            width = 640;
 
        if ( height < 420 )
            height = 420;
 
        var top = parseInt( ( window.screen.height - height ) / 2, 10 ),
            left = parseInt( ( window.screen.width  - width ) / 2, 10 );
 
        options = ( options || 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes' ) +
            ',width='  + width +
            ',height=' + height +
            ',top='  + top +
            ',left=' + left;
 
        var popupWindow = window.open( '', null, options, true );
 
        // Blocked by a popup blocker.
        if ( !popupWindow )
            return false;
 
        try
        {
            // Chrome is problematic with moveTo/resizeTo, but it's not really needed here (#8855).
            var ua = navigator.userAgent.toLowerCase();
            if ( ua.indexOf( ' chrome/' ) == -1 )
            {
                popupWindow.moveTo( left, top );
                popupWindow.resizeTo( width, height );
            }
            popupWindow.focus();
            popupWindow.location.href = url;
        }
        catch ( e )
        {
            popupWindow = window.open( url, null, options, true );
        }
 
        return true;
    }
});