views:

83

answers:

3

This is an extjs single-page application which works fine in FF, IE, and Safari.

There are several problems with viewing or using this extjs app in the iphone. The extjs panels/windows do not resize, as it would in a normal screen. When the user zooms out, the expanding viewing area is blanked out. An example image is below:

  • Iphone does not recognize the combo box of the extjs.
  • Unable to scroll down.

alt text

Viewport Issue: The main issue is with the viewport. It does not scroll or zoom properly in Iphone.

+2  A: 

Ext JS is not (and will likely not be) optimized for mobile devices. That's the purpose for Sencha Touch, which is the mobile framework built on Ext JS and specifically intended for iPhone and Android. I doubt you're going to have much luck resolving these types of issues using standard Ext JS.

bmoeskau
Thank you for the comment. I don't need it to be optimized. I just need it to work. I think it is primarily an extjs viewport issue. Because, extjs panels scroll down as expected, and pinch zoom as expected. It would be a lot of work to adapt the app fully to Sencha Touch.
Natkeeran
+1  A: 

We have experienced the same kind of problem with ExtJS and iPhones, and a slightly different, yet comparable, problem with android devices. I guess that those browsers report the screen size in a way that confuses ExtJS, so the layout mechanisms do not work. Since Sencha Touch has a similar API like ExtJS, making a Sencha Touch version of your software is probably the smartest way to make it work properly on iDevices and Androids.

ammoQ
Thank you. There seems no easy way out of this, other than to develop another version for iphone.
Natkeeran
Maybe you could detect the iPhone and hack the part of ExtJS that tries to determine the screen size. That would at least solve the layout problem.
ammoQ
When we use the pinch or the zoom feature in the iphone, it does not fire the resize event.
Natkeeran
+1  A: 

Rather than using viewport, I used a column layout panel container. Most of the extjs stuff works fine. I placed this container layout into a div and specified its height and width. Also, <meta name="viewport" content="height=700" />.

Natkeeran