【问题标题】:Strange Opera issue about window.open关于 window.open 的奇怪 Opera 问题
【发布时间】:2012-05-30 07:59:03
【问题描述】:

我正在设计一个新的小书签并在 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 的顶部?

【问题讨论】:

    标签: javascript opera


    【解决方案1】:

    您的问题来自这样一个事实,即在 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)})();
    

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-28
      • 2021-08-27
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多