ここで紹介するのは、基本的に、DOM を作成するか、JavaScript で計算する 2 つの方法です。
1) テスト後に新しく作成されたイメージを通じて Aborted リクエストが送信されますが、IE6 では新しいイメージを document.createElement('IMG') に変更することは同じではありません。この解決策;
function getAbsoluteUrl(url){
var img = new Image();
img.src = url; //画像に相対パスを設定するとリクエストが送信されます
url = img.src; //相対パスが絶対パスになりました。 path
img.src = null; // リクエストをキャンセル
return url;
}
getAbsoluteUrl("showroom/list");
2) アンカー (リンク) を作成します。このメソッドはリクエストを発行しません (リクエストは DOM に参加するときに生成されます)。ただし、IE6 はそれをサポートしていません
/*jslint regexp: true、white: true、maxerr : 50、indent: 2 */
function parseURI(url) {
var m = String(url).replace(/^s |s $/g, '').match (/^ ([^:/?#] :)?(//(?:[^:@]*(?::[^:@]*)?@)?(([^:/?#] *)( ?::(d*))?))?([^?#]*)(?[^#]*)?(#[sS]*)?/);
// 権限 = '// ' user ':' pass '@' hostname ':' port
return (m ? {
href : m[0] || '',
protocol : m[1] || '',
権限: m[2] || '',
ホスト: m[3] || '',
ホスト名: m[4] || '',
ポート: m[5 ] || '',
パス名 : m[6] || '',
検索 : m[7] || '',
ハッシュ : m[8]
} : null);
}
function absolutizeURI(base, href) {// RFC 3986
function RemoveDotSegments(input) {
var Output = [] ;
input.replace(/^(..?(/|$)) /, '')
.replace(//(.(/|$)) /g, '/')
.replace (//..$/, '/../')
.replace(//?[^/]*/g, function (p) {
if (p === ' /.. ') {
replace(/^//, input.charAt(0) === '/' ? '/' : '');
}
href = parseURI(href || '');
base = parseURI(base || '');
return !href || 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;
}
当社の製品はモバイル Web ページであるため、IE6 はサポートされなくなり、最終的に 2 番目のソリューションを使用することになりました。
元のメソッドを使用してすべての画像とアンカーにアクセスすると、絶対パスが返されることがわかります。元の相対パスを返したい場合は、jQuery.attr() メソッドなどの DOM クエリ メソッドを使用できます。 :
コードをコピー