[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

microsoft.public.dotnet.framework.aspnet.mobile

WAP redirection without using PHP / ASP / ASP.NET

domtam

11/30/2005 12:08:00 AM

Hi there.

My goal is to add some script to my home page (which is NOT asp / aspx
page, and it is not hosted in IIS) so that any request from mobile
browser will be redirect to another page (a wap page which uses asp.net
mobile control page). How can I do that?

Originally, I planned to use Javascript to do it.

<script language="javascript">
var agt = navigator.userAgent.toLowerCase();
var is_mobile = ( (agt.indexOf("blacknerry") != -1)
|| (agt.indexOf("nokia") != -1)
|| (agt.indexOf("WebtV") != -1)
|| (agt.indexOf("windows ce") != -1)
|| (agt.indexOf("microsoft pocket internet explorer") != -1)
|| (agt.indexOf("up") != -1)
// more different mobile browser user agent here.

);
var mobile_url = "http://wap.mydomain....
if (is_mobile)
window.location = mobile_url;

</script>

It worked with Pocket PC IE, but it didn't work with BlackBerry browser
(emulator).

I suspect that it's because the blackberry browser doesn't understand
javascript. Is that true? If it is the case, it probably won't work for
other mobile browser too.

Is there a better solution to this problem?

Thanks
Dom

2 Answers

Richard Cornford

11/30/2005 1:13:00 AM

0

domtam@hotmail.com wrote:
> My goal is to add some script to my home page (which is
> NOT asp / aspx page, and it is not hosted in IIS) so that
> any request from mobile browser will be redirect to another
> page (a wap page which uses asp.net mobile control page).
> How can I do that?

Redirecting with client-side scripts is generally considered the worst
method available. It certainly is not reliable.

> Originally, I planned to use Javascript to do it.
>
> <script language="javascript">
> var agt = navigator.userAgent.toLowerCase();

The userAgent string is a reflection of the browser's User-Agent header,
and HTTP 1.1 specifies the User-Agent header in a way that precludes it
being regarded as a source of information. (That is, this strategy is
predicated upon a false assumption.)

> var is_mobile = ( (agt.indexOf("blacknerry") != -1)
>|| (agt.indexOf("nokia") != -1)
>|| (agt.indexOf("WebtV") != -1)

This condition can never be true as your string contains only lower case
letters as a result of the use of - toLowerCase -.

>|| (agt.indexOf("windows ce") != -1)
>|| (agt.indexOf("microsoft pocket internet explorer") != -1)
>|| (agt.indexOf("up") != -1)

You are going to regard any userAgent string that contains the character
sequence 'up' as a mobile?

> // more different mobile browser user agent here.
>
> );
> var mobile_url = "http://wap.mydomain....
> if (is_mobile)
> window.location = mobile_url;
>
> </script>
>
> It worked with Pocket PC IE, but it didn't work with
> BlackBerry browser (emulator).
>
> I suspect that it's because the blackberry browser doesn't
> understand javascript. Is that true?

I don't know. It may be incapable of interpreting javascript, or its
interpreter may be disabled by default (either are common with embedded
browsers).

> If it is the case, it probably won't work
> for other mobile browser too.

Yes, it won't work with many embedded browsers, including the ones that
spoof IE in their UA strings.

> Is there a better solution to this problem?

Content negotiation on the server, as per HTTP 1.1 (RFC 2616) (so not a
javascript question). You serve WAP pages to browsers that send Accept
headers expressing a preference for them. Mobile browsers that support
WAP can be expected to do that.

Richard.


domtam

11/30/2005 6:53:00 PM

0

Thank you, Richard, for your answer. Yes, there were some mistakes in
my original script, but you got my idea.

Could you please eleborate your suggestion (content negotiation) a bit
more? I'm not familiar in this topic. In particular, what do I exactly
need to do on my home page to redirect the WAP request? Do I need to
change some settings in the web server (or something like that)?

How do I specify the URL that handles WAP request?

Thanks again
Dom