mirror of
https://github.com/Hopiu/jquery-mobile.git
synced 2026-03-16 22:10:25 +00:00
Fix for issue 1580 - phonegap: Pages with data-ajax="false" on form fail 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.
This commit is contained in:
parent
e775f5e83a
commit
e597ccb381
1 changed files with 19 additions and 6 deletions
|
|
@ -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 );
|
||||
var attrs = [ "href", "src", "action" ],
|
||||
thisAttr = undefined,
|
||||
thisUrl = undefined;
|
||||
|
||||
//if full path exists and is same, chop it - helps IE out
|
||||
thisUrl = thisUrl.replace( location.protocol + "//" + location.host + location.pathname, "" );
|
||||
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 );
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue