2012-11-18 250 views
0

我是一個JS noob,所以請原諒,如果這個問題太「noobish」。Javascript:關閉一個彈出窗口

注:此功能是漫長的,但只是向下滾動,直到你看到// * ** * ** * **因爲這是重要組成部分。

我的功能:

function ShowWindowN(userId,url,width,height,courseId) { 
    var iev=getIEVer(); 
    if(iev>=6&&iev<8){ 
    width+=16*1; 
    } 
    var w=screen.availWidth<width?screen.availWidth:width; 
    var csCookie=readCookie('course_settings_'+userId); 
    var found=false; 
    if(csCookie!=null){ 
    csCookie=eval('({'+csCookie.replace(/&/g,',').replace(/=/g,':')+'})'); 
    if(csCookie[courseId]!=null){ 
     height+=1*csCookie[courseId].height; 
     found=true; 
    } 
    } 
    if(!found){ 
    var plCookie=readCookie('player_settings_'+userId); 
    if(plCookie!=null){ 
     plCookie=eval('({'+plCookie.replace(/&/g,',').replace(/=/g,':')+'})'); 
     height+=1*plCookie.window_extra_height; 
    }else{ 
     height+=16; 
    } 
    } 
    var h=screen.availHeight<height?screen.availHeight:height; 
    var left = (screen.availWidth/2)-(w/2); 
    //************ 
    objMovieWindow=window.open(url, "movieWindow", "width=" + w + ", height=" + h + ", top=0, left="+left+", status=false, toolbar=false, menubar=false, location=false, directories=false, scrollbars=1, resizable=1"); 
    objMovieWindow.focus(); 
    //alert(objMovieWindow.name); 
}; 

如果你看一下2號最後一行,不工作的警報(),它給了我一個「權限被拒絕」的錯誤。我也有,說:「close_me()」只有這樣的功能:

objMovieWindow.close(); 

但是,這並不工作,並給了我一個「不確定」的錯誤。基本上,我加載頁面,然後單擊鏈接啓動彈出窗口,然後重新加載父頁面,並通過單擊父頁面上的鏈接我想關閉彈出窗口。

請告訴我如何關閉該死的彈出窗口?

+1

您的代碼適用於我。所以這個問題不在代碼本身。 – dda

+0

它可能是Firefox嗎?我在FF 16 – Ryan

回答

2

當您重新加載頁面時,您將失去對objMovieWindow的引用,因此您將無法撥打objMovieWindow.close()。如果您想關閉窗口,則必須避免重新加載頁面。

UPDATE

一個解決將是使用相同的名稱再次調用window.open(),並從返回的引用調用close()

+0

那麼我該如何保存該參考?因爲我別無選擇,頁面必須重新加載... – Ryan

+0

您可以再次打開它(具有相同的確切名稱),然後在其上調用close。 –

+0

不,不得不關閉我第一次打開的窗口...可能嗎?沒有辦法保存參考,然後再次調用它? – Ryan