2012-05-30 469 views
0

在一個Web應用程序中,我有許多彈出窗口在不同的點打開。這些是使用window.open()打開的普通彈出窗口,而不是Jquery彈出窗口。它們在瀏覽器窗口的不同位置打開,並且也具有不同的高度和寬度。使用jquery從主窗口打開中心彈出窗口?

現在,我想在瀏覽器中打開所有彈出窗口的中心。我已經寫了一個函數,它會返回頂部和左側的值,以便對傳遞的高度和寬度進行居中。現在,我需要在每次使用window.open打開彈出窗口之前調用此函數,獲取頂部和左側值,然後將它們傳遞給window.open。我可能會在各種javascript文件的許多地方完成此操作。

有沒有一種通用的方式來實現我的要求,幾乎沒有什麼變化使用window.open打開所有彈出窗口。 Jquery能幫我輕鬆做到這一點嗎?

+1

[?你嘗試過什麼(http://whathaveyoutried.com/)使用[jsFiddle](http://jsfiddle.net/)來鏈接你的代碼。這對我們來說更容易幫助你。 – Mordhak

回答

0

我認爲這與您目前的類似,但您可能需要查看。似乎並不像有太多需要使用jQuery link

function PopupCenter(pageURL, title,w,h) { 
var left = (screen.width/2)-(w/2); 
var top = (screen.height/2)-(h/2); 
var targetWin = window.open (pageURL, title, 'toolbar=no, location=no, directories=no,  status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left); 
} 
0

var params = getCenteredCoords(); 
window.open(url, "...", params+"..."); 

只需將您的代碼

myPopup(url, "...", "..."); 

,並宣佈全球

function myPopup(url, name, params) { 
    var coords = getCenteredCoords(); 
    return window.open(ul, name, coords+params); 
} 

是的,您將需要您的自定義解決方案在每個文件中。所以唯一的方法就是不要重複自己並使用一個全局函數。

OK,有一種方法不是在所有的文件改變了一切:覆蓋window.open與您的自定義解決方案:

window.open = (function(original){ 
    return function myPopup(url, name, params) { 
     var coords = getCenteredCoords(); 
     return original(ul, name, coords+params); 
    }; 
})(window.open);