大家看看下面的代码,或许可以对你有帮助,大家快快存档起来吧,一定对你的学习有好处,赶快看看
自己在学习的过程中遇到的许多的问题,好好理解就行了大家能在一起共同学习是缘分!
我们自己在学习的过程当中我们会遇到许多的问题,只要大家努力的学习就能有所成就。
希望帮到大家,大家赶快存储起来,有用的时候随时查找。
经常有人用window.open()的时候被浏览器拦截了 比如
- btn.οnclick=function(){
-
- function aa (){
-
- window.open("xxx");
-
- }
-
- aa();
-
- }
复制代码
其实,如果你的window.open写在用户事件处理函数的当前作用域下,是不会的,只要用户点击页面就触发 window.open事件,这样一般不会拦截,浏览器会认为这是用户的默认行为。
- btn.οnclick=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")
-