获取相对URL的绝对URL。 (IE6问题) [英] Getting an absolute URL from a relative one. (IE6 issue)

查看:165
本文介绍了获取相对URL的绝对URL。 (IE6问题)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在使用以下函数将相对URL转换为绝对值:

  function qualifyURL( url){
var a = document.createElement('a');
a.href = url;
返回a.href;
}

这在大多数浏览器中运行良好,但IE6仍坚持返回相对URL !如果我使用getAttribute('href'),它也会这样做。



我能够从IE6中获取合格的URL的唯一方法是创建一个img元素并查询它的'src'属性 - 这个问题是它生成一个服务器请求;我想避免的事情。



所以我的问题是:有没有办法在IE6中从相对的URL获取一个完全限定的URL(没有服务器请求)? / p>




在您推荐快速正则表达式/字符串修复之前,我向您保证并非如此简单。基本元素+双周期相对网址+一吨其他潜在变量真的让它变得地狱!



必须有办法做到这一点,而不必创建一个正则表达式的解决方案?

解决方案

有多奇怪!但是,当您使用innerHTML而不是DOM方法时,IE确实理解它。

  function escapeHTML(s){
return s.split('&')。join('& amp;')。split('<')。join('& lt;')。split('')。join('& ; quot;');
}
函数qualifyURL(url){
var el = document.createElement('div');
el.innerHTML ='< a href ='+ escapeHTML(url)+'> x< / a>';
返回el.firstChild.href;
}

有点难看,但比自己动手更简洁。


I'm currently using the following function to 'convert' a relative URL to an absolute one:

function qualifyURL(url) {
    var a = document.createElement('a');
    a.href = url;
    return a.href;
}

This works quite well in most browsers but IE6 insists on returning the relative URL still! It does the same if I use getAttribute('href').

The only way I've been able to get a qualified URL out of IE6 is to create an img element and query it's 'src' attribute - the problem with this is that it generates a server request; something I want to avoid.

So my question is: Is there any way to get a fully qualified URL in IE6 from a relative one (without a server request)?


Before you recommend a quick regex/string fix I assure you it's not that simple. Base elements + double period relative urls + a tonne of other potential variables really make it hell!

There must be a way to do it without having to create a mammoth of a regex'y solution??

解决方案

How strange! IE does, however, understand it when you use innerHTML instead of DOM methods.

function escapeHTML(s) {
    return s.split('&').join('&amp;').split('<').join('&lt;').split('"').join('&quot;');
}
function qualifyURL(url) {
    var el= document.createElement('div');
    el.innerHTML= '<a href="'+escapeHTML(url)+'">x</a>';
    return el.firstChild.href;
}

A bit ugly, but more concise than Doing It Yourself.

这篇关于获取相对URL的绝对URL。 (IE6问题)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆