Javascript 有没有办法在灯箱里打开KCFinder,而不是通过窗户打开?

Javascript 有没有办法在灯箱里打开KCFinder,而不是通过窗户打开?,javascript,kcfinder,Javascript,Kcfinder,标题真的说明了这一切,它的工作方式是在新窗口中以弹出窗口的形式打开,我发现的问题是,如果您已经打开了窗口并单击按钮打开弹出窗口,则不会发生任何事情 这意味着人们可能会在不知不觉中打开窗口,并对点击按钮而什么也没发生感到沮丧 希望这是有道理的,但我能想到的唯一解决办法是在页面上的灯箱中打开KCFinder,如果可能的话,有什么想法吗?我认为没有办法在灯箱中打开它,但你可以记录它打开的窗口的名称,然后检查窗口是否打开,如果它已经打开,请关注它。试试这个: window.KCFinder = {

标题真的说明了这一切,它的工作方式是在新窗口中以弹出窗口的形式打开,我发现的问题是,如果您已经打开了窗口并单击按钮打开弹出窗口,则不会发生任何事情

这意味着人们可能会在不知不觉中打开窗口,并对点击按钮而什么也没发生感到沮丧


希望这是有道理的,但我能想到的唯一解决办法是在页面上的灯箱中打开KCFinder,如果可能的话,有什么想法吗?

我认为没有办法在灯箱中打开它,但你可以记录它打开的窗口的名称,然后检查窗口是否打开,如果它已经打开,请关注它。试试这个:

window.KCFinder = {
    callBack: function(fileUrl) {
        // do something with fileUrl
        window.KCFinder = null;
    }
};

if(typeof kcwindow == 'undefined' || kcwindow.closed) {
    kcwindow = window.open('/eshop/kcfinder/browse.php?type=images', 'kcfinder_textbox', 
        'status=0, toolbar=0, location=0, menubar=0, directories=0, resizable=1, scrollbars=0, width=800, height=500'
    );
} else {
    kcwindow.focus();
}

据广泛报道,window.focus()在Chrome中不会将窗口放在最前面。@NickRice这一定是新的,因为当我写这个答案时,它在Chrome中工作得很好。在检查其他浏览器之前,我使用Chrome进行开发。是的,这是完全可能的,而且很可能,因为我确信我读到的内容是相对较新的。我对同一个问题非常恼火,在打公开电话之前,我关闭了一个已经打开的窗口(如果有的话),以确保它出现在最前面。这不好,但在我的情况下很好,我现在可以继续做别的事情了。我应该补充一点,我不确定这一点——在完全探索之前,我采取了最简单(最便宜)的方法来解决这个问题。