В HTML есть много общих URL:
Относительный URL:
Пример.php
Демо/пример.php
./example.php
../../example.php
/example.php
Абсолютный URL:
http://dancewithnet.com/example.php
http://dancewithnet.com:80/example.php
https://dancewithnet.com/example.php
В то же время в HTML существует большое количество значений атрибутов элемента. Как правило, есть два способа получить эти значения атрибутов URL с использованием JavaScript:
<a href = example.php id = Пример-а> В настоящее время страница абсолютно URL http://dancewithnet.com/ </a>
<Скрипт>
var oa = document.getElementbyId ('example-a');
oa.href == 'http://dancewithnet.com/example.php';
oa.getattribute ('href') == 'example.php';
</script>
Мы надеемся получить полный абсолютный URL, путем непосредственного доступа к атрибутам и получить его исходное значение атрибута с помощью метода getattribute. На самом деле, это относительно идеальный результат. Среди всех браузеров A-уровня только Firefox и IE8 могут успешно получить этот результат. Другие браузеры имеют более или менее особые обстоятельства. Для конкретных атрибутов, какие элементы имеют какие условия, см. Демонстрационный пример .
Проблема в большинстве браузеров заключается в том, что оба метода возвращают исходное значение атрибута, в то время как в реальных приложениях часто требуется его абсолютный URL. Решение в «работе с неквалифицированными значениями HREF» слишком сложно. Вот относительно простое решение. Это будет очень просто, если вы не рассмотрите разницу между кодом браузера:
<form action = example.php id = пример-форма>
В настоящее время страница абсолютно URL http://dancewithnet.com/ </form>
<Скрипт>
varoform = document.getElementById ('Пример-форма');
// IE6, IE7, Safari, Chrome, Opera
Oform.Action == 'example.php';
oa.getattribute ('action') == 'example.php';
// общее решение для получения абсолютного URL
getQualifyurl (Oform, 'action') == 'http://dancewithnet.com/example.php';
getQualifyUrl = function (oel, sattr) {
var surl = oel [sattr],
в
bdo = false;
// Это версия перед IE8?
//http://www.thespanner.co.uk/2009/01/29/deting-browsers-javascript-hacks/
//http://msdn.microsoft.com/en-us/library/7kx09ct1%28vs.80%29.aspx
/*@cc_on
пытаться{
bdo = @_jscript_version <5.8? True: @false;
} catch (e) {
bdo = false;
}
@*/
// Если это сафари, хром и опера
if (/a /.__ Proto __ == '//' || /source/.test((/a/.toString+ ''))
|| /^function /( /. test ([]. Sort)) {
bdo = true;
}
if (bdo) {
od = document.createElement ('div');
/*
// результаты, полученные операцией DOM
var oa = document.createElement ('a');
oa.href = oel [sattr];
OD.AppendChild (OA);
*/
od.innerhtml = ['<a href =', surl, '> </a>'] .join ('');
surl = od.firstchild.href;
}
вернуть Surl;
}
</script>
В двух доисторических браузерах есть еще несколько интересных вещей, IE6 и IE7. Значения атрибутов, полученные двумя методами в HTML -элементах A, области и IMG, являются абсолютными URL. К счастью, Microsoft предоставляет второй параметр для Getattribute для решения этой проблемы, а также может решить проблему возврата исходных атрибутов для элементов iFeam и ссылки:
<link href = ../../example.css id = пример link>
<a href = example.php id = Пример-а> В настоящее время страница абсолютно URL http://dancewithnet.com/ </a>
<Скрипт>
var oa = document.getElementById ('Пример-а'),
olink = document.getElementById ('Пример-а);
oa.href == 'http://dancewithnet.com/example.php';
oa.getattribute ('href') == 'http://dancewithnet.com/example.php';
oa.getattribute ('href', 2) == 'example.php';
olink.href == 'example.php';
olink.getattribute ('href') == 'example.php';
olink.getattribute ('href', 4) == 'http://dancewithnet.com/example.php';
</script>