萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> jquery強制彈出新窗口window.open

jquery強制彈出新窗口window.open

   目前情況下我們使用window.open自動彈出窗口都會給浏覽器攔截掉了,但我們會發現有些網站還是可以彈出窗口了,這種是如何實現的呢?下面一起來看一下基於jquery的做法。

  在很多網站中,會有彈出窗口,通常采用window.open的方式,但是這個方式一般被浏覽器給禁止了。

  說明這也是好事。現在的浏覽器:360 獵豹 搜狗 等等都標明自己的安全性、智能性、屏蔽各種廣告,給了用戶很好的體驗,但是可苦了我們這些站長們啊。

  有廣告還不顯示出來,如何過活啊?

  言歸正傳。

  如何用jquery強制彈出新窗口?

  今天分享一個辦法。

  直接上代碼:

  代碼如下

  //打開新鏈接方法實現

  function windowOpen(){

  var a = document.createElement("a");

  a.setAttribute("href", url);

  if(target == null){

  target = '';

  }

  a.setAttribute("target", target);

  document.body.appendChild(a);

  if(a.click){

  a.click();

  }else{

  try{

  var evt = document.createEvent('Event');

  a.initEvent('click', true, true);

  a.dispatchEvent(evt);

  }catch(e){

  window.open(url);

  }

  }

  document.body.removeChild(a);

  }

  //新窗口打開

  windowOpen('http://www.45it.net/', '_blank');

  //當前窗口打開

  windowOpen('http://www.45it.net/', '_self');

  思路

  其實做法很簡單,首先模擬A標簽點擊打開新窗口,若失敗再直接調用window.open方法。

  問題

  目前無法在異步的情況下調用該方法。如下:

  代碼如下

  //以下做法將得不到期望的結果,會被浏覽器阻止$.get("http://www.a.com/ajax",function(){

  windowOpen('http://www.45it.net/', '_blank');

  });

  無法調用的原因是:浏覽器中的javascript是單線程的。雖然$.get是ajax的一個方式,是異步的。但是這個異步只是一個模式,不是真正的浏覽器異步線程。

copyright © 萬盛學電腦網 all rights reserved