Статьи

Использование API Overlay Icon для создания клиентских уведомлений в IE9

Всегда хотел уведомить клиентов / пользователей вашего сайта, пока они работают на вашем сайте. Использование Icon Overlay API для создания клиентских уведомлений в IE9В одном из приложений, которые я помогал построить, это было требование заказчика. Таким образом, в прошлом вы могли реализовать мигающее поведение, при котором значок браузера будет мигать. На мой вкус не очень удобное поведение. С IE9 вы теперь можете использовать новое поведение javascript SiteMode Overlay Icon,  которое является частью функции закрепления сайта .

API Overlay Icon

Overlay Icon API включает два простых метода:

  • msSiteModeSetIconOverlay — метод позволяет передавать оповещения, уведомления и статусы пользователям сайта, добавляя значок поверх существующего значка веб-сайта. Метод принимает два параметра — URL-адрес изображения и значение всплывающей подсказки.
  • msSiteModeClearIconOverlay — метод очищает любой существующий значок наложения.

Обратите внимание, что это поведение будет работать только на закрепленном сайте, поэтому перед использованием этих методов проверьте, находится ли сайт в SiteMode .

Значок наложения в действии

Когда следующая страница загружена в закрепленный сайт, результатом будет значок наложения поверх закрепленного значка сайта :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
    <title>My application</title>
    <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
    <meta name="application-name" content="My Application" />
    <meta name="msapplication-tooltip" content="My Application" />
    <meta name="msapplication-starturl" content="./" />
    <meta name="msapplication-task" content="name=My Blog;action-uri=http://blogs.microsoft.co.il/blogs/gilf;icon-uri=/favicon.ico" />
    <meta name="msapplication-task" content="name=My Linkedin Profile;action-uri=http://il.linkedin.com/in/gilfink;icon-uri=http://www.linkedin.com/favicon.ico" />
    <script type="text/javascript">
        window.external.msSiteModeSetIconOverlay('/info.ico', 'Attention Needed');
    </script>
</head>
<body>
    <form>
    <div class="page">
        <div class="header">
            <div class="title">
                <h1>
                    My ASP.NET Application
                </h1>
            </div>
            <div class="loginDisplay">
                <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
                    <AnonymousTemplate>
                        [ <a href="~/Account/Login.aspx" id="HeadLoginStatus" runat="server">Log In</a>
                        ]
                    </AnonymousTemplate>
                    <LoggedInTemplate>
                        Welcome <span class="bold">
                            <asp:LoginName ID="HeadLoginName" runat="server" />
                        </span>! [
                        <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out"
                            LogoutPageUrl="~/" />
                        ]
                    </LoggedInTemplate>
                </asp:LoginView>
            </div>
            <div class="clear hideSkiplink">
                <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
                    IncludeStyleBlock="false" Orientation="Horizontal">
                    <Items>
                        <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home" />
                        <asp:MenuItem NavigateUrl="~/About.aspx" Text="About" />
                        <asp:MenuItem NavigateUrl="~/IconOverlay.aspx" Text="Icon Overlay" />
                        <asp:MenuItem NavigateUrl="~/msPerformance.aspx" Text="msPerformance" />
                    </Items>
               </asp:Menu>
            </div>
        </div>
        <div class="main">
            <input type="button" value="Remove Icon Overlay" onclick="window.external.msSiteModeClearIconOverlay();" />
        </div>
        <div class="clear">
        </div>
    </div>
    <div class="footer">
    </div>
    </form>
</body>
</html>

Результат выполнения этого кода может выглядеть следующим образом: полная страница может выглядеть следующим образом: и при нажатии кнопки «Удалить значок наложения» она удалит значок добавленной информации.
Пример наложения значков

Значок наложения

Резюме

IE9 предоставляет новый способ уведомления пользователей о том, что происходит на веб-сайтах / в приложениях. Использование простого, но мощного API наложения значков на закрепленных сайтах может сделать ваш веб-сайт / приложение более удобным для пользователя и более привлекательным.