在javascript中销毁cfwindow'不是函数'

时间:2010-04-07 22:06:56

标签: javascript coldfusion

在这里遇到一个问题,我已经尝试了我能想到的一切但却无法让它发挥作用。我有一个页面,其链接创建了一个像这样的cfwindow

function create_window(ID){
    var config = new Object();
    config.modal=true;
    config.center=true;
    config.height=775;
    config.width=700;
    config.resizable=false;
    config.closable=false;
    config.draggable=false;
    config.refreshonshow=true;

    ColdFusion.Window.create('newWindow','Window Title', '/source/url'+ID, config)

创建窗口并且URL具有解析它的ID,用于在窗口中显示正确的项目。一切正常。

问题是当我尝试关闭窗口并打开一个显示不同项目的新窗口时,URL不会更改。我意识到这是因为窗口被隐藏,而不是被破坏,因此它是被打开的窗口。所以我创建了一个onHide事件处理程序来销毁这样的窗口。

function showItemDetails(){
    var ID=document.getElementById("sList").value       
    create_window(ID);
    ColdFusion.Window.onHide('newWindow', refreshList);
}

function refreshList(){
    ColdFusion.bindHandlerCache['sList'].call();  
    ColdFusion.Window.destroy('newWindow',true);
}

现在,当我关闭窗口时,Firebug返回错误“ColdFusion.Window.destroy不是函数”(在IE中,错误是“对象不支持此属性或方法”)。我确保我们在服务器上运行最新版本的ColdFusion 8.01(因为我知道.destroy在8.01之前没有添加)并且已经将最新的修补程序应用到服务器上。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

不幸的是,ColdFusion.Window.destroy()并没有真正破坏是一个已知的错误。我不确定他们是否已经将它固定在CF9中,但它在CF8中肯定是不固定的。

使用ColdFusion.navigate()作为解决方法。而不是销毁窗口,重用相同的窗口并将其导航到其他URL。

答案 1 :(得分:0)

编辑:请改为尝试:

function refreshList(){
    ColdFusion.bindHandlerCache['sList'].call();
    var newWindow = ColdFusion.Window.getWindowObject('newWindow');
    newWindow.close();
}

我认为这更接近,每Adobe's docs ...