Ce qui est présenté ici, ce sont essentiellement deux méthodes, en créant du DOM ou en calculant via JavaScript :
1) Grâce à l'image nouvellement créée, après le test, une requête abandonnée sera envoyée, et IE6 ne la prend pas en charge. Changer la nouvelle image en document.createElement('IMG') est la même chose que le test peut ne pas aimer. cette solution;
fonction getAbsoluteUrl(url){
var img = new Image();
img.src = url; //Définissez le chemin relatif sur Image et une requête sera envoyée
url = img.src; //Le chemin relatif est devenu absolu path
img.src = null; // Annuler la demande
return url;
>
getAbsoluteUrl("showroom/list");
2) Créer une ancre (lien) Cette méthode n'émettra aucune requête (la requête sera générée lors de l'adhésion au DOM), mais IE6 ne la supporte pas non plus
/*expression rationnelle jslint : vrai, blanc : true, maxerr : 50, indentation : 2 */
function parseURI(url) {
var m = String(url).replace(/^s |s $/g, '').match (/^ ([^:/?#] :)?(//(?:[^:@]*(?::[^:@]*)?@)?(([^:/?#] *)( ?::(d*))?))?([^?#]*)(?[^#]*)?(#[sS]*)?/);
// autorité = '// 'user':' pass '@' hostname ':' port
return (m ? {
href : m[0] || '',
protocol : m[1] || '',
autorité : m[2] || '',
hôte : m[3] || '',
nom d'hôte : m[4] || m[5 ] || '',
chemin : m[6] || '',
recherche : m[7] ||
} : null);
}
function absolutizeURI(base, href) {// RFC 3986
function removeDotSegments(input) {
var output = [] ;
input.replace(/^(..?(/|$)) /, '')
.replace(//(.(/|$)) /g, '/')
.replace (//..$/, '/../')
.replace(//?[^/]*/g, function (p) {
if (p === ' /.. ') {
output.pop(); replace(/^//, input.charAt(0) === '/' ? '/' : '');
}
href = parseURI(href || '');
base = parseURI(base || '');
return !href || !base null : (href.protocol || base.protocol)
(href.protocol || href.authority ? href.authority : base.authority)
removeDotSegments(href.protocol || href.authority || href.pathname.charAt(0) == = '/' ? href.pathname : (href.pathname ? ( (base.authority && !base.pathname ? '/' : '') base.pathname.slice(0, base.pathname.lastIndexOf('/') 1) href.pathname) : base.pathname))
(href.protocol || href.authority || href.pathname ? href.search : (href.search || base.search))
href. hash;
}
Comme notre produit est une page Web mobile, il ne prend plus en charge IE6, nous avons donc fini par utiliser la deuxième solution
;
On peut voir que lors de l'accès à toutes les images et ancres à l'aide de la méthode d'origine, des chemins absolus sont renvoyés. Si vous souhaitez renvoyer le chemin relatif d'origine, vous pouvez utiliser la méthode de requête DOM, telle que la méthode jQuery.attr(). :
Copier le code
Le code est le suivant :