oma*_*mar 143
如果您使用JavaScript打开弹出窗口,则可以使用以下内容:
var newWin = window.open(url);
if(!newWin || newWin.closed || typeof newWin.closed=='undefined')
{
//POPUP BLOCKED
}
Run Code Online (Sandbox Code Playgroud)
小智 38
我尝试了上面的一些示例,但我无法让它们与Chrome一起使用.这种简单的方法似乎适用于Chrome 39,Firefox 34,Safari 5.1.7和IE 11.以下是我们JS库中的代码片段.
openPopUp: function(urlToOpen) {
var popup_window=window.open(urlToOpen,"myWindow","toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=yes, width=400, height=400");
try {
popup_window.focus();
} catch (e) {
alert("Pop-up Blocker is enabled! Please add this site to your exception list.");
}
}
Run Code Online (Sandbox Code Playgroud)
Kev*_*n B 32
更新:Popups从古代就存在.最初的想法是在不关闭主窗口的情况下显示另一个内容.截至目前,还有其他方法可以做到这一点:JavaScript能够发送服务器请求,因此很少使用弹出窗口.但有时他们仍然很方便.
在过去邪恶的网站滥用弹出窗口很多.糟糕的页面可能会打开大量带有广告的弹出窗口.所以现在大多数浏览器都试图阻止弹出窗口并保护用户.
如果在用户触发的事件处理程序(如onclick)之外调用它们,则大多数浏览器会阻止弹出窗口.
如果你考虑一下,这有点棘手.如果代码直接在onclick处理程序中,那么这很容易.但是setTimeout中的弹出窗口是什么?
试试这段代码:
// open after 3 seconds
setTimeout(() => window.open('http://google.com'), 3000);
Run Code Online (Sandbox Code Playgroud)
弹出窗口在Chrome中打开,但在Firefox中被屏蔽.
...这也适用于Firefox:
// open after 1 seconds
setTimeout(() => window.open('http://google.com'), 1000);
Run Code Online (Sandbox Code Playgroud)
不同之处在于Firefox处理超过2000毫秒或更短的超时是可以接受的,但在它之后 - 删除了"信任",假设现在它"在用户操作之外".所以第一个被阻止,第二个被阻止.
当前2012年的原始答案:
该溶液中弹出式窗口拦截检查已在FF(V11),Safari浏览器(V6),铬(v23.0.127.95)IE进行了测试(V7&V9).更新displayError函数以根据需要处理错误消息.
Run Code Online (Sandbox Code Playgroud)var popupBlockerChecker = { check: function(popup_window){ var scope = this; if (popup_window) { if(/chrome/.test(navigator.userAgent.toLowerCase())){ setTimeout(function () { scope.is_popup_blocked(scope, popup_window); },200); }else{ popup_window.onload = function () { scope.is_popup_blocked(scope, popup_window); }; } } else { scope.displayError(); } }, is_popup_blocked: function(scope, popup_window){ if ((popup_window.innerHeight > 0)==false){ scope.displayError(); } }, displayError: function(){ alert("Popup Blocker is enabled! Please add this site to your exception list."); } };用法:
Run Code Online (Sandbox Code Playgroud)var popup = window.open("http://www.google.ca", '_blank'); popupBlockerChecker.check(popup);
希望这可以帮助!:)
Unc*_*lby 11
无论浏览器公司或版本如何,一个始终有效的"解决方案" 是简单地在屏幕上放置一条警告消息,靠近将创建弹出窗口的控件,礼貌地警告用户该操作需要弹出一个弹出窗口并且请为网站启用它们.
我知道它不是花哨或任何东西,但它不能变得更简单,只需要大约5分钟的测试,然后你可以继续做其他的噩梦.
一旦用户允许您的网站弹出窗口,如果您不过度弹出窗口,也会考虑周到.你要做的最后一件事是惹恼你的访客.
| 归档时间: |
|
| 查看次数: |
79656 次 |
| 最近记录: |