偶尔,我遇到一个试图弹出一个新窗口(用于用户输入或重要的东西)的网页,但弹出窗口阻止程序会阻止这种情况发生.
调用窗口可以使用哪些方法来确保新窗口正确启动?
我在堆栈溢出中搜索了很多问题,可能在这里 重复检测Popup
但not helped for me同时,在测试中铬(测试v26.0.1410.64)
下面的方法Worked in IE and Firefox,但not in Chrome
var popup = window.open(winPath,winName,winFeature,true);
if (!popup || popup.closed || typeof popup.closed=='undefined'){
//Worked For IE and Firefox
alert("Popup Blocker is enabled! Please add this site to your exception list.");
window.location.href = 'warning.html';
} else {
//Popup Allowed
window.open('','_self');
window.close();
}
Run Code Online (Sandbox Code Playgroud)
任何适用于Chrome的更好的解决方案呢?
是什么导致某些浏览器将我的代码视为未经请求的?
我有一个致力于帮助人们进行互动会话的网站.它从用户单击[开始]开始,因此这是一个同意的操作.这应该(1)打开弹出窗口,同时(2)将第一页重定向到结束页面,如下所示:
<head>
<SCRIPT language="JavaScript">
function openwindow(){window.open("{INTERACTION}","interaction","resizable=0,width=800,height=600,status=0");}</SCRIPT>
</head>
<body>
<FORM action="end.php" method="{METHOD}" >
<input type="submit" class="button"
onClick="javascript: openwindow()"
value="Begin" />
</FORM>
</body>
Run Code Online (Sandbox Code Playgroud)
如上所述,这并不是试图打开一个未经请求的弹出窗口,但IE和Chrome的某些版本似乎正在处理它.我一直试图修复,最近消化了这篇文章.
在其中Bobince评论
这些天,你真的不需要问"我的未经请求的弹出窗口被阻止了吗?",因为答案总是"是" - 所有主流浏览器都默认打开弹出窗口阻止程序.最好的方法是只对window.open()响应直接点击,这几乎总是允许的.我很乐意接受这个原则,因为我只想让我的弹出窗口打开.
是什么导致某些浏览器将我的代码视为未经请求的?
我很感激你能给我的任何帮助.(正如你可能已经猜到的那样,客户端不是我的包,而这个话题一直困扰着我多年).
非常感谢(和手指交叉)吉尔斯
我正在尝试创建一个简单的Facebook应用程序,但对于授权,它似乎总是被弹出窗口阻止程序阻止.我的代码是这样的:
FB.init({
appId : THEAPPPIDDDD,
status : true,
cookie : true,
xfbml : true,
});
FB.login(function(response) {
if (response.authResponse) {
FB.api('/me', function(response) {
FB.logout(function(response) {
console.log('Logged out.');
});
});
} else {
console.log('User did not authorize.');
}
});
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激...谢谢
在 JS 中有一种方法可以打开窗口并立即关闭它,它不会在新选项卡中打开,我只想打开一个窗口(如果可能的话,在后台)做一些检查并立即关闭它,没有新标签页打开的效果,这可能吗?
像这样的东西,但没有打开窗口的效果......
var popup = window.open("http://www.google.com");
popup.close();
Run Code Online (Sandbox Code Playgroud)
更新: 这是我找到的解决方案,但它有时会闪烁,我想避免它...
function goNewWin() {
var TheNewWin = window.open("http://www.yahoo.com", 'TheNewpop', 'toolbar=1,location=1,directories=1,status=1,menubar=1,scrollbars=1,resizable=1');
TheNewWin.blur();
TheNewWin.close();
}
Run Code Online (Sandbox Code Playgroud) 在我的Angular 10应用程序中,我想在新的浏览器选项卡中打开组件。我想在不引导整个应用程序并创建另一个应用程序实例的情况下执行此操作。
我发现文章在新的浏览器选项卡中动态打开 Angular 组件,无需再次引导整个应用程序,它准确地描述了我所需要的内容。
但存在一些问题——它无法正常工作。在 Chrome 隐身模式下它工作正常,但在 Chrome 正常模式或 Firefox 中则无法工作。它会打开新选项卡几毫秒并自行关闭。在其他计算机上,它在 Firefox 中运行良好,但在 Chrome 中根本不起作用。
我的问题是否可以通过某种解决方案或黑客来实现这一目标,并允许它在任何或大多数浏览器中工作?我不想创建多个实例,因为很难进行通信并保持应用程序的一种状态。
好吧我正在使用Chromium用于Ubuntu 9.10并且无法使用检测弹出窗口阻止程序的常规方法来实现这一点......
var popup = window.open(...);
var blocked;
if(!popup) {
blocked = true;
} else {
blocked = false;
}
Run Code Online (Sandbox Code Playgroud)
此外,此SO帖子中的已接受解决方案,Chrome中的检测阻止弹出窗口,无效.
这个问题在“如何检查我的浏览器上是否阻止了弹出窗口”中被多次提出,我发现的所有解决方案都提出了一个解决方案,即打开一个新的弹出窗口进行测试。
参考:
等等。
我想知道是否有可能知道一个被阻止的弹出窗口,而无需实际打开一个。
因为由于多种原因,测试弹出窗口可能需要一些时间才能关闭,这在应用程序的起始页面上看起来很难看。
例如,如果我们可以使用来自客户端的请求标头中的任何内容,来了解弹出窗口首选项等,就像我们可以获得语言首选项一样。
这将是一个巨大的帮助。谢谢
有没有办法将全局数据存储在window对象中,以便数据可以在页面重新加载/刷新后继续存在.所以我要说我分配我的全局数据/对象 -
window.myObject = myProductObject
Run Code Online (Sandbox Code Playgroud)
用户刷新/重新加载页面或可能跳转到我的网站的另一页.是否window.myObject仍然可用的页面重新加载后?
注意 - :我不能将对象存储在cookie中,因为它是一个对象,我的意思是它可以是对另一个自定义对象的引用,或者它可以引用通过"window.open"打开的另一个"窗口"对象
我正在尝试加载facebook auth页面,以便用户将他们的fb帐户与我的网站连接.问题是它是一个不同的领域.代码如下
var left = (screen.width/2)-(550/2);
var top = (screen.height/2)-(250/2);
fbPopUp = window.open(authorizeURL,'fbWindow','menubar=0,status=0,titlebar=0,toolbar=0,resizable=1,width=400,height=275, top='+top+' , left='+left);
Run Code Online (Sandbox Code Playgroud)
javascript ×8
popup ×4
jquery ×2
angular ×1
browser ×1
browser-tab ×1
dom ×1
facebook ×1
firefox ×1
window ×1