Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fix for issue 1580 - phonegap: Pages with data-ajax="false" on form f…

…ail to load

In the $.ajax() callback, we look for elements with @href, @src, and @data-ajax="false" elements, the code then assumes that matching elements will have either @href or @src, which of course forms don't ... they have @action ... so the code throws an exception because thisUrl is undefined.

- I reworked the code to handle action and check to make sure we have an attribute and url string before attempting to use them.
  • Loading branch information...
commit e597ccb381913308ce4c31662c8eba67509f8c1a 1 parent e775f5e
Kin Blas jblas authored
Showing with 20 additions and 7 deletions.
  1. +20 −7 js/jquery.mobile.navigation.js
27 js/jquery.mobile.navigation.js
View
@@ -606,14 +606,27 @@
if( !$.support.dynamicBaseTag ) {
var newPath = path.get( fileUrl );
to.find( "[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]" ).each( function() {
- var thisAttr = $( this ).is( "[href]" ) ? "href" : "src",
- thisUrl = $( this ).attr( thisAttr );
-
- //if full path exists and is same, chop it - helps IE out
- thisUrl = thisUrl.replace( location.protocol + "//" + location.host + location.pathname, "" );
+ var attrs = [ "href", "src", "action" ],
+ thisAttr = undefined,
+ thisUrl = undefined;
+
+ for (var i = 0; i < attrs.length; i++) {
+ var a = attrs[i],
+ v = $( this ).attr( a );
+ if (v) {
+ thisAttr = a;
+ thisUrl = v;
+ break;
+ }
+ }
- if( ! /^(\w+:|#|\/)/.test( thisUrl ) ) {
- $( this ).attr( thisAttr, newPath + thisUrl );
+ if ( thisAttr && thisUrl ) {
+ //if full path exists and is same, chop it - helps IE out
+ thisUrl = thisUrl.replace( location.protocol + "//" + location.host + location.pathname, "" );
+
+ if( ! /^(\w+:|#|\/)/.test( thisUrl ) ) {
+ $( this ).attr( thisAttr, newPath + thisUrl );
+ }
}
});
}
Please sign in to comment.
Something went wrong with that request. Please try again.