用过FckEditor的朋友都知道,它的选择图片对话框中“浏览服 务器”按钮。点击该按钮可以浏览以前已经上传过的文件。不过这个按钮点击后弹出的对话框在MAXTHON浏览器下是以标签形式打开的,这样模态对话框就始 终显示在了浏览文件窗口之前,要想选择文件得先关掉模态对话框。先前有朋友提出把弹出模态对话框的功能改为ShowModlessDialog,这个终究 不是解决之道,现将我的解决方法写下来与大家分享:
思路就是基于IE内核的浏览器采用模态对话框弹出浏览服务器窗口,其他的仍然window.open不变1:修改/fckeditor/editor/dialog/common/fck_dialog_common.js
1
function
OpenFileBrowser( url, width, height )
2
{
3
//
oEditor must be defined.
4
5
var
iLeft
=
( oEditor.FCKConfig.ScreenWidth
-
width )
/
2
;
6
var
iTop
=
( oEditor.FCKConfig.ScreenHeight
-
height )
/
2
;
7
8
var
sOptions
=
"
toolbar=no,status=no,resizable=no,dependent=yes,scrollbars=yes
"
;
9
sOptions
+=
"
,width=
"
+
width ;
10
sOptions
+=
"
,height=
"
+
height ;
11
sOptions
+=
"
,left=
"
+
iLeft ;
12
sOptions
+=
"
,top=
"
+
iTop ;
13
14
//
The "PreserveSessionOnFileBrowser" because the above code could be
15
//
blocked by popup blockers.
16
if
( oEditor.FCKConfig.PreserveSessionOnFileBrowser
&&
oEditor.FCKBrowserInfo.IsIE )
17
{
18
//
The following change has been made otherwise IE will open the file
19
//
browser on a different server session (on some cases):
20
//
http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
21
//
by Simone Chiaretta.
22
var
oWindow
=
oEditor.window.open( url, 'FCKBrowseWindow', sOptions ) ;
23
24
if
( oWindow )
25
{
26
//
Detect Yahoo popup blocker.
27
try
28
{
29
var
sTest
=
oWindow.name ;
//
Yahoo returns "something", but we can't access it, so detect that and avoid strange errors for the user.
30
oWindow.opener
=
window ;
31
}
32
catch
(e)
33
{
34
alert( oEditor.FCKLang.BrowseServerBlocked ) ;
35
}
36
}
37
else
38
alert( oEditor.FCKLang.BrowseServerBlocked ) ;
39
}
40
else
41
{
//这里是修改部分
42
if
(oEditor.FCKBrowserInfo.IsIE)
43
{
44
window.showModalDialog(url
+
"
&rdm=
"
+
new
Date(),window,
"
status:false;dialogWidth:
"
+
width
+
"
px;dialogHeight:
"
+
height
+
"
px/
""
);
45
}
46
else
47
{
48
window.open( url, 'FCKBrowseWindow', sOptions ) ;
49
}
50
}
51
}
2:修改/fckeditor/editor/filemanager/browser/default/frmresourceslist.html
function
OpenFile( fileUrl )
{
if
( window.dialogArguments)
{
window.dialogArguments.SetUrl( fileUrl ) ;
window.close() ;
window.dialogArguments.focus() ;
}
else
{
window.top.opener.SetUrl( fileUrl ) ;
window.top.close() ;
window.top.opener.focus() ;
}
}
这样就没有问题了。