在Javascript

时间:2016-03-10 15:30:12

标签: javascript internet-explorer contextmenu

我正在尝试创建一个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代码。

<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获得焦点?

1 个答案:

答案 0 :(得分:0)

您的问题是如何设置注册表。我使用Windows 8.1并以这种方式设置注册表:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ MenuExt \&amp; Live Search] @ = “C:\ USR \的StackOverflow \ livesearch.htm” “上下文”= DWORD:00000001

一切正常(你的剧本)。

就像你可以看到,Contexts的值与指南中描述的值不同(而不是我使用的是0x10)。

说你需要重新启动浏览器是没有用的。

焦点问题

关闭窗口窗口后,IE失去焦点。

MSDN中所述,您需要访问external.menuArguments属性以获取当前窗口处理程序,即。

所以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>