2009-11-17 52 views
3

我想從一個JavaScript函數啓動一個彈出窗口,並確保它具有使用下面的調用重點:給孩子的窗口焦點在IE8

window.open(popupUrl, popupName, "...").focus();

它可以在其他瀏覽器,但IE8在閃爍的橙色任務欄通知中將新窗口置於後臺。顯然,這是IE8的一個特點:

http://msdn.microsoft.com/en-us/library/ms536425(VS.85).aspx

它說,我應該能夠通過使焦點()調用來自新頁面發起的重點窗口,但似乎沒有任何工作。我嘗試在頁面中的腳本標記和body的onload中插入window.focus(),但它沒有效果。有什麼我錯過了關於加載頁面時調用focus(),或者另一種方式來啓動IE8不會隱藏的彈出窗口?

回答

0

我想通了什麼問題是 - 原來,原因銀行經營在onload中的window.focus()沒有工作是因爲第一個window.open()。focus()調用導致它在後臺開始閃爍,並且之後的任何後續焦點調用都不起作用。如果我不嘗試將它從調用窗口中聚焦,但只能從彈出窗口中正常顯示出來。什麼惱人的「功能」 ......

0

你可以試試這個。不知道這是否會工作雖然>

var isIE = (navigator.appName == "Microsoft Internet Explorer"); 
var hasFocus = true; 
var active_element; 

function setFocusEvents() { 
    active_element = document.activeElement; 
    if (isIE) { 
     document.onfocusout = function() { onWindowBlur();  } 
     document.onfocusin = function() { onWindowFocus();  } 
    } else { 
     window.onblur = function() { onWindowBlur();   } 
     window.onfocus = function() { onWindowFocus();  } 
    } 
} 

function onWindowFocus() { 
    hasFocus = true; 
} 

function onWindowBlur() { 
    if (active_element != document.activeElement) { 
     active_element = document.activeElement; 
     return; 
    } 
    hasFocus = false; 
} 
0

是啊,我不能在此刻無論是測試這個IE8的,但有一齣戲本的document.ready方法,而不是body.onload:

TEST1 html的:

<html> 
    <head> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
     <script type="text/javascript"> 
      function openNewWindow() 
      { 
       window.open("test2.html", null, "height=200, width=200"); 
      } 
     </script> 
    </head> 
    <body>       
     <a onclick="openNewWindow()">Open</a> 
    </body> 
</html> 

test2.html:

<html> 
    <head> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function(){ window.focus(); }); 
     </script> 
    </head> 
    <body> 
     <div id="container" style="background:blue;height:200px;width:300px"> 
     </div> 
    </body> 
</html> 
1

的IE8是不允許因爲安全問題

的Windows Internet Explorer 8和更高版本此功能。焦點方法不再將子窗口(例如使用open方法創建的窗口)帶到前臺。子窗口現在通過閃爍標題欄向用戶請求焦點。要直接把窗口的前景,添加腳本來調用它的窗口對象的對焦方法的子窗口

http://msdn.microsoft.com/en-us/library/ms536425%28VS.85%29.aspx

0

的問題是Window.focus方法在Internet Explorer 8(IE 8)不工作。這不是一個彈出式窗口攔截器或IE 8或以上的任何設置;這是因爲我相信阻止令人討厭的彈出窗口回到頂端的安全性。

很多頭髮拉動和谷歌上搜索後,我發現:

微軟建議更新,但是這似乎並沒有工作,加上他們是如何真的希望我問所有的用戶我的網站的更新他們的機器!

所以我想出了這個解決方法。

我做什麼用的窗口:

  1. 首先我檢查,如果窗口開啓
  2. ,如果它是開放的,關閉它
  3. 打開窗口的新新版本之上。

JavaScript代碼在標題中或單獨的文件,包括:在頁面上

function nameoflink() 
{ 
    var nameofwindow = window.open('pagetolinkto.htm','nameofwindow','menubar=1,resizable=1,width=350,height=250'); 
    if (nameofwindow) { 
     nameofwindow.close(); 
    } 
    window.open('pagetolinkto.htm','nameofwindow,'menubar=1,resizable=1,width=350,height=250'); 
    return false; 
} 

鏈接:

<a href="#" onclick="nameoflink()">Click Here to go to name of link</a> 

在MS Windows 7的測試與IE8不知道的確切版本。