2012-05-30 74 views
0

我正在設計一個新的書籤,我正在Opera上測試它。有關window.open的奇怪Opera問題

這是我的代碼:

javascript:(function(){var a=window.open('http://www.google.com','Ok','left='+((window.screenLeft||window.screenX)+10)+',top='+((window.screenY||window.screenTop)+0)+',height=200px,width=400px,resizable=1,alwaysRaised=1,location=1,links=0,scrollbars=0,toolbar=0');window.setTimeout(function(){a.focus()},250)})(); 

的問題是,新的窗口不會出現在頂部,但在從頂部約200像素(在其他瀏覽器如Internet Explorer,Firefox和Chrome它的工作原理好 )。

那麼,爲什麼這個窗口沒有出現在Opera的頂端呢?

回答

3

你的問題來自於一個事實,即在Opera,都window.screenYwindow.screenTop定義,並screenY似乎總是等於0,這是一個JavaScript falsy值,所以

window.screenY||window.screenTop 

總是會在Opera中返回window.screenTop,而實際需要第一個值。

檢查的正確方法是:

'screenY' in window ? window.screenY : window.screenTop 

這是您的完整代碼,我還更新了檢查screenLeft/screenX

javascript:(function(){var a=window.open('http://www.google.com','Ok','left='+(('screenLeft' in window ? window.screenLeft : window.screenX)+10)+',top='+(('screenY' in window ? window.screenY : window.screenTop)+0)+',height=200px,width=400px,resizable=1,alwaysRaised=1,location=1,links=0,scrollbars=0,toolbar=0');window.setTimeout(function(){a.focus()},250)})(); 

好運。

+0

謝謝,現在它適用於所有瀏覽器:D – xRobot