Условный оператор для обнаружения iPhone

Я пытаюсь отобразить что-то специально для пользователей iPhone на веб-странице, используя условные операторы (как в IE).

<!--#if expr="(${HTTP_USER_AGENT} = /iPhone/)"-->
Hello
<!--#endif -->  

Похоже, это не скрывает себя от пользователей, не использующих iPhone. У кого-нибудь есть предложения?


person Peachy    schedule 16.12.2010    source источник
comment
Рекомендуемое чтение: developer.apple.com/ library/safari/#documentation/ Также обратите внимание, что iPhone, iPod и iPad — это все возможности для пользователей Mobile Safari. Есть ли причина, по которой вы не хотите делать это с помощью условного CSS?   -  person Cody Gray    schedule 16.12.2010
comment
Я не уверен, почему я не подумал об этом, но это сработало просто отлично.   -  person Peachy    schedule 16.12.2010


Ответы (2)


Используйте javascript или обработку на стороне сервера.

.js:

if (navigator.userAgent.indexOf('iPhone') > -1)
    document.getElementById('iphoneMessage').style.visibility = 'visible';  
person martona    schedule 16.12.2010

Хорошо, я решил это по совету Коди Грея.

CSS:

<!--#if expr="(${HTTP_USER_AGENT} = /iPhone/)"-->
<style type="text/css">
<!--
.iPhone {visibility:visible;}
-->
</style>
<!--#else -->
<style type="text/css">
<!--
.iPhone {visibility:hidden}
-->
</style>
<!--#endif -->

HTML

<div class="iPhone">
Hi
</div>

*Редактировать

В итоге я сделал это в .net и заполнителе:

Внешний интерфейс:

<asp:PlaceHolder ID="myPlaceHolder" runat="server"> 
hi
</asp:PlaceHolder> 

Код позади:

 String userAgent;
        userAgent = Request.UserAgent;
        if (userAgent.IndexOf("iphone") > -1)
        {
            myPlaceHolder.Visible = true;
        }
        else
        {
            myPlaceHolder.Visible = false;

        }
    }
person Peachy    schedule 16.12.2010