转自:http://www.cnblogs.com/litao229/archive/2012/02/24/2367056.html
经常有人用window.open()的时候被浏览器拦截了 比如
btn.onclick=function(){
function aa (){
window.open("xxx");
}
aa();
}
其实,如果你的window.open写在用户事件处理函数的当前作用域下,是不会的,只要用户点击页面就触发 window.open 事件,这样一般不会拦截,浏览器会认为这是用户的默认行为。
btn.onclick=function(){
window.open("xxx");
}
其实这样的代码是可行的不会有问题
也可以代码可编写如下:
var $E = YAHOO.util.Event; var adPopup; var popAd = function(sURL,sName,sFeatures,bReplace) { if (adPopup) return; if(sName == undefined) { sName = '_blank'; }; if(sFeatures == undefined) { sFeatures = ''; }; if(bReplace == undefined) { bReplace = false; }; adPopup = window.open(sURL,sTarget,sFeatures,bReplace); adPopup.blur(); adPopup.opener.focus(); $E.removeListener(document.body, 'click', arguments.callee); } try { popAd(); } catch (e) { $E.on(document.body, 'click', popAd); }
当然如果用户浏览器安装了拦截插件,那很有可能不会弹出(比如 Firefox 的 noscript 插件,就不允许任何弹出窗)。方法不是绝对的,也不是最好的,只是用最少的时间来做最效率的事情。
PS:可以通过模拟 form 提交的方式来弹出窗口,穿越性(相对于一般拦截弹窗的插件)很好,不过无法设置 sFeatures 参数内容
function openUrl( url ){ var f=document.createElement("form"); f.setAttribute("action" , url ); f.setAttribute("method" , 'get' ); f.setAttribute("target" , '_black' ); document.body.appendChild(f) f.submit(); } openUrl("http://www.qq.com")
相关推荐
但是,在实际应用中,由于浏览器的安全策略限制(如弹出窗口拦截功能),直接使用`window.open()`可能会导致新窗口被浏览器自动拦截,从而无法正常显示。本文将详细介绍如何使用`window.open()`方法打开新窗口,并...
总的来说,解决`window.open()`被浏览器拦截的问题,关键在于确保用户与页面的交互是触发新窗口打开的原因。开发者应尽量遵循良好的用户体验原则,避免不必要的弹窗,同时根据实际需求选择合适的解决方案。在实际...
为了让`window.open()`不被浏览器拦截,开发者需要注意以下几点: 1. **确保用户交互**:确保`window.open()`是在用户明确的操作之后调用的,例如点击按钮。 2. **避免滥用**:不要滥用`window.open()`,只在必要的...
为了防止恶意网站频繁弹出新窗口,Chrome对window.open有严格的限制。例如,当用户没有交互行为(如点击按钮)时,非用户触发的window.open可能会被阻止。此外,如果页面已经存在多个窗口,新的window.open请求也...
请注意,过度使用`window.open()` 可能会引起用户的反感,因为它可能会被浏览器的弹窗阻止功能拦截,或者在用户体验方面被视为不友好。因此,谨慎使用,并考虑使用其他交互方式,如模态对话框,以提供更好的用户体验...
用传统的window.open()方式打开新窗口,会被浏览器阻止,那么,我们如何才能让JS打开新窗口不被浏览器阻止呢?其实办法还是有的,这里我们就来分析一下如何解决这个问题 我最近也遇到了这样的问题,所以就把弹出新...
浏览器为了防止恶意脚本无休止地弹出窗口,会对非用户交互触发的`window.open`调用进行拦截。本文将详细讲解这一现象,并提供相应的解决方案。 **现象分析** 在项目开发中,如果直接通过JavaScript代码调用`window....
文章中提到了几种实现 `window.open()` 方法不被浏览器拦截的解决方法,其中包括新建 `a` 标签模拟点击、使用 `window.showModalDialog()` 方法和使用 `setTimeout()` 与 `window.open()` 结合的方式。 1. 新建 `a`...
在网页开发过程中,有时我们需要使用JavaScript的`window.open`函数来打开新的窗口或标签页,例如用于弹出新窗口展示详细信息或者进行页面跳转。然而,由于浏览器的安全策略和用户设置,`window.open`可能会被拦截,...
这种机制是为了防止恶意软件自动弹出窗口,干扰用户。 首先,问题的出现是因为浏览器将`window.open()`调用解释为非用户发起的事件,因此将其拦截。尽管在AJAX回调函数中模拟用户行为(如使用jQuery的`.trigger('...
### window.open被浏览器拦截后的自定义提示效果代码 随着网络安全意识的提高以及用户体验的优化,现代浏览器大多具备了拦截弹窗的功能。这一功能虽然能够有效防止不必要的广告干扰用户浏览体验,但也可能导致某些...
确保用户有明确的动作触发弹出窗口,以避免被浏览器拦截。 - **权限问题**:如果用户已经阻止了网页的弹窗,`window.open()`可能不会工作。在这种情况下,你可能需要提示用户更改他们的浏览器设置或使用其他交互...
为了解决这个问题,我们可以使用`window.open`方法配合一些策略来避免窗口被浏览器拦截。 `window.open`是JavaScript中的一个内置函数,用于创建一个新的浏览器窗口、打开已存在的窗口或者替换当前窗口。基本语法...
如果`window.open()`返回`null`,则表示浏览器可能拦截了弹出窗口,此时可以通过弹出警告告知用户。 此外,`features`参数中的特性还可以自定义窗口的样式,例如: ```javascript var features = 'width=800, ...
在这个例子中,点击元素 `#last` 后,新窗口会被打开,但其位置会被设置为 `jb51.net` 在1秒后,这样浏览器会认为这是用户交互的一部分,而不是自动弹出的广告。 3. **先打开窗口,后设置URL**:另一种策略是先打开...
在网页开发中,有时我们需要创建一个新的浏览器窗口来展示特定的内容,`window.open` 是...此外,由于浏览器的同源策略和弹窗拦截策略,`window.open`可能在某些情况下被限制,因此在开发时需要考虑到这些潜在的问题。
在使用Xilium CefGlue时,可能会遇到一个常见的问题,即浏览器组件在点击链接或执行JavaScript的`window.open`时,会弹出新的窗口,而不是在当前窗口或者在已存在的标签页中打开。这可能不符合用户的期望,特别是...
5. 弹出窗口的最佳实践:尽量避免使用弹出窗口,因为它们可能被浏览器的弹窗阻止功能拦截,且对用户体验造成负面影响。若必须使用,可以考虑使用模态对话框(modal dialogs)或者使用HTML5的`<dialog>`元素。 6. ...