window.open 出现在 webkit 浏览器后面,但如果我打开 facebook 或 twitter 页面则不会?
Posted
技术标签:
【中文标题】window.open 出现在 webkit 浏览器后面,但如果我打开 facebook 或 twitter 页面则不会?【英文标题】:window.open appearing behind webkit browsers, but not if I open a facebook or twitter page? 【发布时间】:2011-08-24 11:01:30 【问题描述】:我正在使用window.open()打开
http://twitter.com/share.. 和 http://www.facebook.com/sharer.php...
允许用户发布到他们的 Facebook 或 Twitter 帐户。
这些弹出窗口正确显示在我当前的 Chrome 或 Safari 窗口的前面。
但是,当我将 URL 更改为当前域上的另一个页面时,弹出窗口出现在当前窗口的后面而不是在前面!?相同的代码,相同的打开窗口的函数,只是传递给 window.open() 的 URL 不同。
我不知道为什么,我已经尝试了所有方法,注释掉了弹出页面中的任何 javascript 或任何可能导致 Chrome/Safari 认为它是恶意的内容。
这些浏览器是否将 URL 检测为 Facebook/Twitter 并允许它出现在前面,而将其他内容推到后面?
这是我的开窗功能
InfoOverlay.prototype.popupWindow = function(url, title, width, height)
var left = (screen.width/2) - (width/2);
var top = (screen.height/2) - (height/2);
var targetWin = window.open(
url,
title,
'toolbar=no, location=no, directories=no, alwaysRaised=yes, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + width + ', height=' + height + ', top=' + top + ', left=' + left
);
// These 2 lines added on suggestion from commenter below
// (doesn't fix issue)
targetWin.blur();
targetWin.focus();
【问题讨论】:
【参考方案1】:可能是您打开的那些页面中有代码来集中注意力(例如 window.focus();)
您应该能够在弹出窗口的页面中的代码中执行此操作,只需确保为窗口命名,然后执行 WindowName.focus();
这个 html 中的快速模型似乎适用于 IE9、Chrome、FF4,但不适用于 Safari(我有 Windows 上的 3.x)
<script>
var myWin
</script>
<button onclick="myWin = window.open('about:blank', 'foo', 'height=200,width=200,modal=yes,alwaysRaised=yes');">Show Window</button>
<button onclick="myWin.blur();">Blur</button>
<button onclick="myWin.focus();">Focus</button>
【讨论】:
你最初尝试过,不高兴。出于安全原因,我前段时间在某处阅读了他们阻止 .focus() 的内容。 作为对您的编辑的回复,我已将我的代码放入原始帖子中,以向您展示我的代码仍然无法将其置于最前面(但传递给它的 Twitter 和 Facebook URL 没有问题)。以上是关于window.open 出现在 webkit 浏览器后面,但如果我打开 facebook 或 twitter 页面则不会?的主要内容,如果未能解决你的问题,请参考以下文章
IE浏览器在弹出窗口时提示:不支持此接口 window.open()方法是啥原因,以前用得挺好的
window.open浏览器弹出新窗口被拦截—原因分析和解决方案
javascript使用window.open(url)方式实现下载文件功能,但却有时不能弹出下载框?