WAP redirection without using PHP / ASP / ASP.NET

D

domtam

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.com";
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
 
R

Richard Cornford

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.com";
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.
 
D

domtam

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
 
B

B Wisentaner

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.com";
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

Do not count on WAP browsers in general to support Javascript.
If all your clients support WMLscript, you could look that up.
I think you want to look up the WURFL list of which handsets support
which capabilities.
And your script tag should have " type=text/javascript' "

---Bruce Wisentaner
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,731
Messages
2,569,432
Members
44,832
Latest member
GlennSmall

Latest Threads

Top