我正在设计一个新的书签,我正在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的顶部?
答案 0 :(得分:3)
您的问题来自以下事实:在Opera中, window.screenY 和 window.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)})();
祝你好运。