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

问题是新窗口没有出现在顶部,但距离顶部大约 200 像素(在其他浏览器,如 Internet Explorer、Firefox 和 chrome 中效果很好)。

那么,为什么这个窗口没有出现在 Opera 的顶部?

4

1 回答 1

3

您的问题来自这样一个事实,即在 Opera 中,window.screenYwindow.screenTop都已定义,并且screenY似乎总是等于 0,这在 JavaScript 中是一个虚假值,所以

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 回答