Можно ли определить, когда пользователь переключает вкладки? - PullRequest
3 голосов
/ 17 января 2011

В частности, мне интересно узнать, возможно ли зафиксировать клик пользователя на другой вкладке браузера. Я думаю, что технически я мог бы получить размытие и фокус объекта окна, но если бы было что-то более тесно связанное с браузером (IE, FF, Chrome и т. Д.), Это было бы еще лучше.

1 Ответ

4 голосов
/ 17 января 2011

IE

Если вы пишете собственный код (т.е. плагин для браузера), вы можете использовать DWebBrowserEvents2 :: WindowStateChanged .

Вот пример кода для вашей IDispatch::Invoke() реализации:

    // DWebBrowserEvents2
    case DISPID_WINDOWSTATECHANGED: {
        if (pDispParams) {
            DWORD dwMask  = pDispParams->rgvarg[0].lVal;
            DWORD dwFlags = pDispParams->rgvarg[1].lVal;

            // We only care about WINDOWSTATE_USERVISIBLE.
            if (dwMask & OLECMDIDF_WINDOWSTATE_USERVISIBLE)
            {
                bool visible = !!(dwFlags & OLECMDIDF_WINDOWSTATE_USERVISIBLE));

                // ... your code here ...
            }
        }
        break;
    }

Нет явного события, отправляемого в Javascript страницы, но событие размытия может делать то, что вы хотите.

Firefox

В Firefox вы можете обнаружить изменения табуляции в вашем XUL, добавив прослушиватель событий для TabAttrModified и проверив атрибут selected. Информацию о работе с браузером с вкладками .

см. В документации MDC.
...