2016-03-10 58 views
0

我想創建一個IE上下文菜單項,指向一個Javascript html文件,這裏描述的https://msdn.microsoft.com/en-us/library/bb735853(v=vs.85).aspx#IEAddOnsMenus_topic1 在「添加到上下文菜單」部分下。我在HKCU \ Software \ Microsoft \ Internet Explorer \ MenuExt 中列出了上下文菜單項,它指向一個帶有javascript的html文件。這裏是我使用的Javascript代碼。在IE中的IE上下文菜單項

<script language="JavaScript"> 

function pausescript(ms) { 
ms += new Date().getTime(); 
while (new Date() < ms){} 
}  
{ 
var win = window.open("http://www.example.com");  
pausescript(2000);  
win.close(); 

}  
</script> 

我想彈出一個窗口,然後等待2秒,然後關閉窗口。它正在工作,但當它關閉彈出窗口由於某種原因,IE失去焦點,除IE之外的任何其他窗口重新獲得焦點,即使我強制從IE上下文菜單彈出。彈出窗口關閉後,如何讓IE獲得焦點?

回答

0

你的問題是如何設置註冊表。我使用的是Windows 8.1,我設置這樣的註冊表:

Windows Registry Editor Version 5.00 

[HKEY_CURRENT_USER \軟件\微軟\的Internet Explorer \ MenuExt \ & Live搜索] @ =「C:\ USR \ StackOverflow的\ livesearch.htm 「 」Contexts「= dword:00000001

All working fine(your script)。

就像你可以看到上下文的值不同於指南中描述的值(而不是0x10我使用1)。

說你需要重新啓動瀏覽器是無用的。

焦點問題

關閉窗口poup窗口IE失去焦點後。

正如MSDN中所述,您需要訪問external.menuArguments屬性以獲取當前ie的窗口處理程序。

所以JavaScript代碼:

<script language="JavaScript"> 

    function pausescript(ms) { 
     ms += new Date().getTime(); 
     while (new Date() < ms){} 
    } 
    { 
     var win = window.open("http://www.example.com"); 
     pausescript(2000); 
     win.close(); 
     try { 
      // access the current browser window 
      var parentwin = external.menuArguments; 

      // get the document element 
      var doc = parentwin.document; 

      // focus it 
      doc.body.focus(); 
     } catch(ex) { 
      alert(ex); 
     } 
    } 
</script> 
+0

這沒有奏效。它可以工作,如果你只有IE瀏覽器打開,但說你有記事本和IE都打開。點擊記事本然後回到IE並點擊上下文菜單項。只要彈出窗口關閉記事本窗口就會彈出最頂層的窗口,即使我點擊的最後一個窗口是IE窗口,也會彈出窗口。我如何防止這種情況發生並將重點放回到IE? – carnick

+0

@carnick我更新了片段,所以現在試試 – gaetanoM

+0

gaemaf,非常感謝,我一直在尋找這個! – carnick