1

新しいブックマークレットをデザインしていて、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)})();

問題は、新しいウィンドウが上部に表示されないが、上部から約200pxの位置に表示されることです(Internet Explorer、Firefox、Chromeなどの他のブラウザでは正常に機能します)。

では、なぜこのウィンドウがOperaの上部に表示されないのですか?

4

1 に答える 1

3

あなたの問題は、Operaではwindow.screenYwindow.screenTopの両方が定義されており、screenYは常にJavaScriptのの値である0に等しいように見えるという事実から来ています。

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)})();

幸運を。

于 2012-05-30T09:05:11.730 に答える