Commit graph

319 commits

Author SHA1 Message Date
scottjehl
0d98b8fad6 changed setting of lastScroll 2011-09-06 14:29:19 -04:00
scottjehl
97539ed3bd focus on title or page div 2011-09-06 12:58:14 -04:00
scottjehl
003505a4b9 changed minscroll to 250, better organization of lastscroll 2011-09-06 12:56:46 -04:00
scottjehl
ac67e92cbb This change sets the "lastScroll" property to each urlHistory item object, allowing us to remember previous scroll distances when returning to a page that has since been removed from the DOM. Before this change, this number was stored in data on the page element, so it is lost when the page is removed after pagehide.
Also, this change removes a reference in memory that we were keeping to the $activeClickedLink on each page. We stored this in attempt to refocus a link after returning to a page. Unfortunately, it doesn't seem that this data can be retained after pages are removed from the DOM, outside of somehow remembering a unique selector string to reach that element again (which could be achieved by adding some overhead, ala http://stackoverflow.com/questions/2068272/getting-a-jquery-selector-for-an-element )
2011-09-06 12:56:46 -04:00
scottjehl
522b48ee84 started on the change to allow default prevention on beforechangepage 2011-09-05 13:05:57 -04:00
gseguin
001e588c92 Fix for issue #2017. Clear active link on vclick so there can be only one active link at a time. 2011-08-31 21:46:39 -07:00
John Bender
f679d30620 added ipv6 support to urlparse regex Fixes #2362 2011-08-30 15:59:46 -07:00
John Bender
bddc8c8ed2 small tweak to directedHashChange to make sure the right value is passed in for isBack 2011-08-29 09:12:39 -07:00
John Bender
6b010492b2 minor refactors in nav and pushstate for clarity 2011-08-27 01:01:54 -07:00
John Bender
82cce1fa60 fix the chrome bug and reduce the number of crazy hash juggles we do 2011-08-27 01:01:54 -07:00
John Bender
328d58b2e9 fixed role retention issue from clearing the dom cache 2011-08-27 01:01:54 -07:00
John Bender
b569c1cc8b fix for dialog and subpage key url issues with replace state 2011-08-26 14:54:27 -07:00
John Bender
44eaf7707b fix broken hash on dialog after initial page load 2011-08-25 10:49:51 -07:00
John Bender
af0e1f5d7e whitepasce in nav 2011-08-25 10:49:51 -07:00
gseguin
9f3836e7b1 Fix for issue #1405: Moved assignment of $activeClickedLink to the vclick handler in charge of adding the active state 2011-08-17 17:32:55 -07:00
scottjehl
ee17b4f05c Ensure that navigating backwards through dialogs works as expected when domCache is false (which is the default now). 2011-07-31 10:03:22 -04:00
scottjehl
be74405b49 Added a configurable timeout to $.mobile.loadPage to give pages that are being fetched from cache a little time to load before a loading message appears. We'll need to tweak this timer based on device testing to determine how long it takes on average to fetch a cached page. If the delay ends up needing to be longer than 300ms or so to suit some devices, it's probably not worth having this feature at all. 2011-07-30 08:33:04 -04:00
scottjehl
bdba60efd5 removed urlHistory references to (and use of) each entry's "page" property, which kept a reference to the DOM elements of each page that had been loaded. This fixes leaking memory on removed pages, and outsources page requests to the browser cache (for real this time :) ). 2011-07-29 19:51:17 -04:00
John Bender
50acf2eb7c fix to use options defined on page widget to determing domCache settings 2011-07-29 12:55:40 -07:00
John Bender
27b4ba1691 ajaxDomCaching -> domCache 2011-07-29 10:10:26 -07:00
John Bender
d716f3e9e7 moved dom cache check above the enhance to let widgets unbind parent page hide behaviour. added parent removal to listview special remove 2011-07-29 10:10:25 -07:00
scottjehl
a8c3859d84 using regular data method to access widget 2011-07-29 10:10:25 -07:00
scottjehl
dc054a10e7 implemented ajax dom caching option of the page plugin, which can be overridden by page options or data attribute. Includes unit test to support feature. 2011-07-29 10:10:25 -07:00
Ghislain Seguin
d1e8083f15 Merge pull request #2152 from webmynd/master
Consider data-role when picking page transition in changePage
2011-07-27 10:04:39 -07:00
Samuel Padou
051855e94d Bug 2064; Add try/catch block to prevent 'Unspecified error' when we use an IFrame on IE9 2011-07-27 14:53:27 +02:00
James Brady
9cf3a60dee Consider data-role when picking page transition.
Re-use existing "isDialog" variable in changePage,
instead of just looking at settings.role.
2011-07-27 12:24:41 +01:00
scottjehl
1a828594f5 default for loadPage should be to not show the loading message, since its default use case is to fetch a page that is not yet active. However, changePage should cause it to show because loadPage is being called during a page change. 2011-07-21 08:04:12 -04:00
scottjehl
259815d480 Make data-role=page elements optional. This change makes the framework more lenient with markup, and will ease integration with existing sites, as well as mashups with external content. Unit tests included. Fixes #2096 2011-07-17 14:52:49 -04:00
scottjehl
f84ceb12ed Merge remote branch 'origin/master' 2011-07-15 16:30:03 -04:00
John Bender
ca173441d0 small refactor the the base url change for readability 2011-07-15 10:47:06 -07:00
scottjehl
a5d0a294e9 Implemented data-prefetch attribute for anchor elements. Presence of this attribute on an anchor will cause the referenced page to be preloaded when the parent page of that anchor is shown. Fixes #1819. 2011-07-15 13:16:31 -04:00
John Bender
d827be3bf2 relative url change per Kin Blas's last pre-vacation request 2011-07-13 16:04:24 -07:00
John Bender
b761496ece moved typeof check to jQuery.type() 2011-07-07 09:22:24 -07:00
John Bender
bf9c071900 whitespace in navigation 2011-07-07 09:19:16 -07:00
Ghislain Seguin
2deeee14d7 More elegant fix for #1990
Re-use $.mobile.allowCrossDomainPages & call deferred.reject to notify caller of failure
2011-06-30 13:40:06 -07:00
Ghislain Seguin
8117f12ad5 Coding standards 2011-06-29 21:03:12 -07:00
Ghislain Seguin
b02e19891a Replace $.noop by function that throws to not fail silently 2011-06-29 21:02:53 -07:00
Ghislain Seguin
5fe310600f Fix for #1990: Introducing $.mobile.ajaxCrossDomainEnabled defaults to false 2011-06-29 20:00:12 -07:00
Kin Blas
2b51355656 Switch back to processing link clicks on the "click" event. It really is the only reliable way across all the devices we support.
Also, remove all references to useFastClick.
2011-06-29 17:38:00 -07:00
Kin Blas
aff87cc9f1 Fix for the mysterious "page is too large" error Todd and Scott were seeing on Blackberry 5 prior to shipping jQM beta 1.
Turns out this little code was enough to invoke the error:

"/dir1/dir2".replace(/\/?/, "");

Rewrote the regexp in path.makePathAbsolute() that was stripping leading slash, and trailing filename/slash. This gets around the problem.

Special thanks to @adambiggs for helping me test 33 iterations when trying to narrow down what in jquery.mobile.navigation.js was choking BB5.
2011-06-27 16:50:01 -07:00
Kin Blas
0d65a0d1c5 - Fixed issue #1923 - url of form is miscalculated
- Added code to calculate whether to choose the documentUrl or the page Url in the case where an action is not specified on a form element.

	- Fixed bug in the navigation "submit" handler where an error was being thrown if "type" was not specified.

	- Fixed typo "diabled" id typos in tests/unit/navigation/index.html.

	- Added tests for form submissions with no action in both base and non-base specified cases.
2011-06-27 10:25:13 -07:00
Martin Sutherland
83973b429b Fix issue 1913 - unnecessary ajax call and duplicate DOM nodes when refreshing a page with a dialog visible 2011-06-23 18:33:06 +02:00
scottjehl
a43ce64db2 moved our form binding into the _registerInternalEvents callback, to ensure it's not bound until after mobilinit. 2011-06-22 11:43:22 -04:00
scottjehl
c227535bd7 removed vclick + click combined event binding, which was in there as a workaround for a not-consistently-occurring bug in Android 2.1. I think the real issue is related to lack of dynamic base tag support, and that occasionally, a relative href click will use default handling in 2.1 and go where it shouldn't (ignoring the base href). Either way, this double binding causes history problems in Safari, so I'm removing it while we search for a better 2.1 workaround. Fixes #1870 2011-06-21 12:43:17 -04:00
scottjehl
ffdfa4e7c2 moved page load event bindings to a post-mobileinit callback so that the useFastClick option can be set before it is used. Unit test included. Fixes #1869 2011-06-21 11:33:38 -04:00
Kin Blas
5890a801be Fixed a couple of errors caught by jshint. 2011-06-20 15:09:54 -07:00
scottjehl
9fffcb6eca bind to click as well, for an edge case in android 2.1 2011-06-20 13:44:33 -04:00
scottjehl
9c9a9ad147 set page min-height using availHeight or availWidth, rather than height (to fine tune height to exclude browser chrome). Also, reset the active page height on throttledresize and pageshow, eliminating some duplicate calls. 2011-06-20 13:31:26 -04:00
scottjehl
45a71ac499 Added global config option "useFastClick", so that the changes we made for automated ajax handling since A4 can be disabled if needed, for whatever reason. When handling clicks and taps automatically with Ajax, this option will use jQuery Mobile's <code>vclick</code> event, enabling page changes to happen slightly sooner on devices that support touch events, and keeping the address bar hidden during page transtions. When disabled, the automatied Ajax handling will use an ordinary <code>click</code> event instead. This option has no effect on non-touch devices, but when enabled, it may interfere with jQuery plugins that bind to click events rather than vclick events. Fixes #1857 2011-06-20 11:35:09 -04:00
scottjehl
823485ce11 Blur other buttons when a new one is clicked and gaining focus. This gets rid of the trail of focus states issue we've been seeing. Fixes #1840. 2011-06-19 14:34:36 -04:00
scottjehl
a09c53eb71 improved the address bar hiding logic to support Android as well by determining up-front which hiding number should be used. Fixes #1673. Fixes #1322. Fixes #1786. 2011-06-19 13:53:27 -04:00
scottjehl
ffa35c0548 improved minheight page logic 2011-06-17 19:19:47 -04:00
scottjehl
fcbfc2f380 added minScrollBack feature to core options. This is the minimum scroll distance that will be jumped-to when returning to a page. By default, the distance is screen.height /2. If you really needed to disable scroll memory altogether, this could be set to Infinity. Note that disabling scroll memory altogether is almost never a good idea for usability, but the option is there. 2011-06-17 19:19:47 -04:00
scottjehl
3bd713c185 added resetActivePage on pagecreate, orientationchange, and after transitions. 2011-06-17 19:19:47 -04:00
scottjehl
690dc66f7c set heights including respective scrolls 2011-06-17 19:19:46 -04:00
scottjehl
aa950ba125 Only call scrollTo if there's a scroll distance we need to go to. If the distance we're jumping to is 20px or less, let it go in for tolerance. Reset toPage height before scrolling, focusing. 2011-06-17 19:19:46 -04:00
scottjehl
df7ac2f642 fix up the page heights during transitions, and min-heights otherwise. 2011-06-17 19:19:46 -04:00
scottjehl
ed7aae1d1c hide address bar during page changes by catching ajax clicks early through binding to touchend, and make pages fit screen height during transitions 2011-06-17 19:19:46 -04:00
scottjehl
722ed2cbbf If ajax is disabled, exit the click handler early and avoid parsing the href at all. Thanks for the idea, @toddparker! Fixes #1846. 2011-06-17 18:33:16 -04:00
Kin Blas
96b3e710d4 Added utility functions $.mobile.getDocumentBase() and $.mobile.getDocumentUrl() so that developers can retrieve the original base and url used when loading the document. 2011-06-16 15:43:40 -07:00
Kin Blas
8b6d14bb03 Fix for issue 1826 - Nightly build - dialog box no longer rounded corners
- Don't set a default value for the 'role' option to loadPage() and changePage(). Instead, rely on the role attribute that is on the element.

- Fixed an error that was happening when a hash change involves going from a dialog back to another dialog. I had recently made changes that assumed the 'to' variable was always going to be a url string, but it turns out in the dialog back to dialog case, it is an actual jQuery collection.
2011-06-16 13:36:39 -07:00
Kin Blas
d2f115349a Fix for issue 1833 - No page transition used when hitting the browser forward button
- Don't use the transition of the initial page on the stack.
2011-06-15 15:28:52 -07:00
jblas@adobe.com
dd69372dd4 Adjusted the urlParserRE regexp to account for double slashes in the directory path to work around a phonegap 0.9.4. 2011-06-15 10:37:08 -07:00
Kin Blas
c011f51f14 Removed unused path.isRelative() function. Replaced unit tests for isRelative() with tests for path.isRelativeUrl. 2011-06-13 16:45:10 -07:00
Kin Blas
e286808391 Rule of thumb ... get your logic right and your code will behave as you expect.
- I should've been using !== instead === when figuring out docBaseDiffers.
2011-06-10 16:13:58 -07:00
Kin Blas
963a84cb18 IE7 returns an empty string for regexp submatches while all other browsers return undefined. Modified the parseUrl() function to normalize all non-matches to an empty string and replaced all strict checks for undefined to strict checks for an empty string. 2011-06-10 15:31:09 -07:00
Kin Blas
244385b9f9 Merge branch 'master' into path-fixes 2011-06-10 10:02:11 -07:00
Kin Blas
b7bcf93620 - We were missing a changepage notification in the case where we were transitioning to the same page.
- Added changepagefailed notification for the case where the load fails. Note we still need beforeloadpage/loadpage notifications.

- Misc fixes to stop the navigation unit tests from seemingly random failures. It seems that the hash resets in setup/teardown of the test modules sometimes interferes with the changePage() requests in the tests. Added code to the setup/teardown functions to wait for the reset to complete before moving on to the tests.
2011-06-10 10:00:25 -07:00
frietsch
d99d096ab7 Bugfix: ":jqmData(ajax='false')" might also match forms, which have neither of "src" or "href". In that case, thisUrl is undefined, and the following replace results in an error. 2011-06-09 08:21:21 -07:00
Kin Blas
3d6bd402a2 - Changes to get the navigation_helpers.js unit tests green.
- Modified isExternal so that it returns true/false to help with unit tests.
2011-06-08 17:20:01 -07:00
Kin Blas
8e1e77badf Get deep linking to internal pages working again. We can now also deep link to nested list sub-pages that are contained within internal pages. 2011-06-08 15:06:41 -07:00
Kin Blas
33b9ee8052 Changes to make sure the data-url are either an id, site relative path (for same domain), or absolute Url (for cross-domain Phone Gap). 2011-06-08 14:47:24 -07:00
Kin Blas
a99728d178 - Added addSearchParams() utility function.
- Removed unused path functions: setOrigin(), makeAbsolute(), and isQuery().
- Modified loadPage() so that it uses addSearchParams() instead of naively appending it to the URL.
- Switched the global "click" handler back to using the link @href attribute and manually converting it to an absolute URL. This was necessary because it turns out that the href property on a link is dynamically calculated at the time of access based on the *CURRENT* base tag setting. This means the same link can return a different href value if the the base tag is different each time you access it.
2011-06-06 15:58:21 -07:00
Kin Blas
19f1a775b9 Missed a couple of places I should've used hrefNoHash when I converted documentBase to an urlObject. 2011-06-04 10:51:41 -07:00
Kin Blas
f9dd767528 Switched form handler over to processing absolute urls. 2011-06-04 01:22:16 -07:00
Kin Blas
ba502f0aff Changes to switch the global link click handler over to processing absolute urls. 2011-06-04 00:26:25 -07:00
Kin Blas
b148ee424a Added isSameDomain() Utility function. 2011-06-03 13:57:25 -07:00
Kin Blas
b31825a1d7 Fixed issue 1767 - loadPage/changePage broken in trunk (latest build)
- Not sure how/why I added that extra absUrl, but its gone now.
2011-06-02 10:41:55 -07:00
Kin Blas
a2182dafa9 - Added a getClosestBaseUrl() utility function for calculating the correct base URL to use for a given element.
- We should be using makeUrlAbsolute() instead of makePathAbsolute() when calculating the documentBase.
- Removed bogus code in pathname calculatino in makeUrlAbsolute().
- Reworked calculation of search in makeUrlAbsolute() to prevent an undefined in the case where rel and abs urls have no search.
2011-06-01 17:15:18 -07:00
Kin Blas
3ca5dd854a - Added URL parsing and relative to absolute path and url utility methods.
- Switched the base tag management code over to using new utilities.
2011-06-01 11:59:13 -07:00
Kin Blas
ef9d55f4b6 Hopefully the last set of fixes for issue 1712 - $.mobile.changePage broken in latest
- The test case calls changePage() with a hash ("#b"). In our normal processing of clicks/form submits we strip it before calling. The old code did a strip in changePage() just in case, so I added it back in to fix the last bug.
2011-05-27 10:53:19 -07:00
Kin Blas
6fdb90df17 Fixed a typo in $.mobile.loadPage.defaults. The default for the data property should be undefined, not the string "undefined". 2011-05-26 17:04:27 -07:00
Kin Blas
7befe9087a The signature of changePage() has changed but folks need some time to transition to using the new signature. I added code to changePage() that maps any old signature calls to changePage() into a new call. This should fix issue 1712 ($.mobile.changePage broken in latest). This code should be removed before shipping 1.0. 2011-05-26 16:39:09 -07:00
Kin Blas
bee8549a18 Fixed a bad typo caught by @johnbender and @gseguin.
- Replaced an un-intentional semi-colon with a comma.
2011-05-25 15:13:44 -07:00
scottjehl
8929ac33b9 Removed the ajaxLinksEnabled and ajaxFormsEnabled settings. These were deprecated in a4 and scheduled for removal. Automated link and form ajax handling can still be globally disabled via the ajaxEnabled option. 2011-05-24 16:08:30 -04:00
Kin Blas
786ef25e0a Changes to get the navigation unit tests green again.
- Modified changePage() to set isPageTransitioning earlier.
- Modified pageSequence() to allow the current changepage callback stack to unwind before firing off the next function in the sequence.
2011-05-23 14:30:40 -07:00
John Bender
dc530ea751 page sequence helper added, nav tests in a somewhat better state. the event trigger spot, namespace, and general setup are all up for debate 2011-05-21 22:15:12 -07:00
Kin Blas
5ba2cc975e Inverted the logic around ignoreNextHashChange so that it actually matches the name of the variable.
Modified the hashchange callback so that it specifies a "none" transition, instead of a false boolean, for the case where the hash changed and there is nothing on the urlHistory stack.
2011-05-20 15:19:54 -07:00
Kin Blas
edc94fb6ec The dialog "pop" unit test was failing because the active variable in changePage() was being dereferenced. The unit test clears the urlHistory.stack array manually so we just need to make sure we don't dereference active if it doesn't exist. 2011-05-19 17:01:26 -07:00
Kin Blas
59afbda49b Added a pageContainer option to changePage and loadPage. 2011-05-18 18:06:15 -07:00
Kin Blas
3a047112a0 Removed debug try/catch block I accidentally checked in.
Made lots of whitespace changes to bring file up to jquery core style guidelines.
2011-05-18 16:38:04 -07:00
Kin Blas
cafb6acef9 Separated changePage() into 2 functions:
- loadPage() now loads all pages into the DOM.
	- changePage() only functions on pages that are in the DOM. If you call it with a URL instead of an element, it will call loadPage() which will then trigger a call to changePage() with the resulting page at a later time.
2011-05-18 15:58:15 -07:00
Kin Blas
b96310eedf - Externalize some of the nested functions in changePage().
- Modified changePage() so that it can take an options object. Updated all references throughout the framework.
- Split $.mobile.pageLoading() into 2 functions $.mobile.show/hidePageLoadingMsg(). Updated docs accordingly.
- Renamed $.mobile.defaultTransition to $.mobie.defaultPageTransition. Updated docs accordingly.
- Added $.mobile.defaultDialogTransition so that it isn't hard coded in the changePage/transitionPages and select code.
- Hand integrated jquery.mobile.navigation.js checkins from master: 4b4ee54a, e775f5e8, e597ccb3, 084bbbd8.
2011-05-16 16:02:26 -07:00
Kin Blas
52a666d71f Check $from before dereferencing it. 2011-04-26 16:36:31 -07:00
Kin Blas
19c06952fd Changes to allow 3rd party transitions. Developers can now register a custom transition by adding their transition handler to the $.mobile.transitionHandlers dictionary. The name of the custom transition is used as the key within the transtionsHandlers dictionary, and should be the same name used within the @data-transtion attribute.
The expected prototype for a transitionHandler is as follows:

function handler(name, reverse, $to, $from)

The name parameter is the name of the transition as specified by @data-transition attribute, reverse is a boolean that is false for a normal transition, and true for a reverse transition. The $to param is a jQuery collection containing the page that is being transitioned "to", and $from is an optional collection that tells us what page we are transitioning "from". Because $from is optional, handler developers should take care and check $from to make sure it is not undefined before attempting to dereference it.

In addition to registering custom transition by name, developers can specify a handler to use in the case where a transition name is specified and does not exist within the $.mobile.transitionHanlders dictionary. Within jQuery Mobile, the default handler for unknown transition types is the $.mobile.css3Transition() handler. This handler always assumes that the transition name is to be used as a CSS class to be placed on the $to and $from elements. To change the default handler, simply set $.mobile.defaultTransitionHandler to you function handler:

$.mobile.defaultTransitionHandler = myTransitionHandler;

The changes to make all this necessary are as follows:

- Created $.mobile.noneTransitionHandler which is the default transitionHandler for the framework that simply adds and removes the page active class on the $from and $to pages with no animations.

- Moved class based transition code into a new plugin jquery.mobile.transition.js file. This plugin, when present, overrides the noneTransitionHandler as the defaultTranstionHandler for the framework so that CSS3 animation transitions are available.

- Removed code related to the setting/removal of the ui-mobile-viewport-perspective class. The css3TransitionHandler plugin takes care of automatically placing a "viewport-<transition name>" class on the viewport (body) element. This allows any other transition to specify properties on the viewport that are necessary to accomplish the transition.

- changed the CSS class ui-mobile-viewport-perspective to viewport-flip to match code changes. This makes it more apparent that setting -webkit-perspective is only used with the flip transition.

- Updated js/index.php, Makefile and build.xml to include the new jquery.mobile.transition.js file.
2011-04-26 14:06:10 -07:00
Kin Blas
f7749504b8 Modified the vclick handler code in navgation.js so that it doesn't place the ui-btn-active class on any links meant for interactivity.
Removed the return false in the vclick handler of collapsible and replaced it with a preventDefault(). The only reason we were returning false was to stopPropagation() so that the vclick handler in navigation.js  didn't place a ui-btn-active on it.
2011-04-22 10:53:24 -07:00
Kin Blas
2d2e6d7741 Fix for issue 1461 - Tops of pages missing after dialog click in Safari and iPhone.
- Delayed the setting of focus till *AFTER* the scroll position is restored.
2011-04-21 15:31:21 -07:00
John Bender
dbd68472b4 whitespace and comment fixes 2011-04-18 22:35:13 -07:00
John Bender
8e42b52767 beginning to move to absolute hashes in all cases, still some more work to do 2011-04-18 21:46:53 -07:00
Kin Blas
c31ee33a0f Fix for 1407 - Bad scroll performance since A4 on iPhone 3G
- Modified vmouse code so that it uses $.data() instead of $().data() which is significantly faster.

- Modified the navigation and buttonMarkup code so they stop using live(). The vmouse code triggers several events during the touch events, which in turn causes the underlying event code to call $.closest() with the selector used during the live() call to figure out if the event should be handled. This turns out to be very expensive, so instead, we now just bind directly to the document, and walk the DOM manually to figure out if we should handle it. This is much faster since we are avoid triggering multiple nested function calls.
2011-04-18 16:13:50 -07:00