On Fri, May 2, 2008 at 4:59 PM, Matthew Young <[EMAIL PROTECTED]> wrote:
> I only want to find out the user's timezone.
>  setGatherExtendedBrowserInfo(true) redirect page take too long, sometimes
it
>  stays on the screen many seconds.

You can often best do this in a custom way by either creating your own
variant of WebRequestCycle#newClientInfo or e.g. by integrating it in a
login form for instance (which of course only works for applications where
users have to be logged in before they get to the point where your browser
info matters).

That roughly works like this:

Java:

pubic LoginForm(String id) {
 super(id, new CompoundPropertyModel(new ClientPropertiesBean()));
 add(new HiddenField("navigatorAppName"));
 add(new HiddenField("navigatorAppVersion"));
 add(new HiddenField("navigatorAppCodeName"));
 add(new HiddenField("navigatorCookieEnabled"));
 add(new HiddenField("navigatorJavaEnabled"));
 add(new HiddenField("navigatorLanguage"));
 add(new HiddenField("navigatorPlatform"));
 add(new HiddenField("navigatorUserAgent"));
 add(new HiddenField("screenWidth"));
 add(new HiddenField("screenHeight"));
 add(new HiddenField("screenColorDepth"));
 add(new HiddenField("utcOffset"));
 ...

HTML template:

<wicket:head><!-- if in a panel -->
 <script language="javascript" src="/html/static/js/rollover.js"></script>
</wicket:head>
...
<form name="login" wicket:id="login" style="margin: 0px; "
onsubmit="submitform(this)">
 <span style="display: hidden;">
   <input type="hidden" name="navigatorAppName" wicket:id="navigatorAppName"
value="test" />
   <input type="hidden" name="navigatorAppVersion"
wicket:id="navigatorAppVersion" value="test" />
   <input type="hidden" name="navigatorAppCodeName"
wicket:id="navigatorAppCodeName" />
   <input type="hidden" name="navigatorCookieEnabled"
wicket:id="navigatorCookieEnabled" />
   <input type="hidden" name="navigatorJavaEnabled"
wicket:id="navigatorJavaEnabled" />
   <input type="hidden" name="navigatorLanguage"
wicket:id="navigatorLanguage" />
   <input name="navigatorPlatform" type="hidden"
wicket:id="navigatorPlatform" />
   <input name="navigatorUserAgent"  type="hidden"
 wicket:id="navigatorUserAgent" />
   <input name="screenWidth" type="hidden" wicket:id="screenWidth" />
   <input name="screenHeight" type="hidden" wicket:id="screenHeight" />
   <input name="screenColorDepth" type="hidden" wicket:id="screenColorDepth"
/>
   <input name="utcOffset" type="hidden" wicket:id="utcOffset" />
 </span>
 ...
</form>
...

Login.js:

function submitform(form) {
 form.navigatorAppName.value = window.navigator.appName;
 form.navigatorAppVersion.value = window.navigator.appVersion;
 form.navigatorAppCodeName.value = window.navigator.appCodeName;
 var cookieEnabled = (window.navigator.cookieEnabled)? true : false;
 if (typeof window.navigator.cookieEnabled == "undefined" && !cookieEnabled)
{
   document.cookie = "wickettestcookie";
   cookieEnabled = (document.cookie.indexOf("wickettestcookie")!=-1)? true :
false;
 }
 form.navigatorCookieEnabled.value = cookieEnabled;
 form.navigatorJavaEnabled.value =  window.navigator.javaEnabled();
 form.navigatorLanguage.value = window.navigator.language ?
window.navigator.language : window.navigator.userLanguage;
 form.navigatorPlatform.value = window.navigator.platform;
 form.navigatorUserAgent.value = window.navigator.userAgent;
 if (window.screen) {
 form.screenWidth.value = window.screen.width;
 form.screenHeight.value = window.screen.height;
 form.screenColorDepth.value = window.screen.colorDepth;
 }
 form.utcOffset.value = (new Date().getTimezoneOffset() / -60);
 return true;
}


That should give you an idea :-)

Eelco

Reply via email to