Document#
Document.URL#
Właściwość URL
zwraca adres URL dla danego dokumentu. Właściwość jest tylko do odczytu.
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
var url = document.URL;
gdzie poszczególne człony oznaczają:
- url - łańcuch znakowy reprezentujący adres URL dokumentu.
- document - dokument będący obiektem kontekstu.
Adres URL dla danego dokumentu może ulec zmianie z wartości domyślnej "about:blank"
tylko i wyłącznie w czasie jego tworzenia za pośrednictwem parsera HTML lub parsera XML . Technicznie rzecz biorąc, to właściwość URL
zawsze zwraca absolutny adres URL, którego ostateczna wartość może zależeć od obecności bazowego adresu URL w dokumencie.
Alternatywnie można skorzystać z identycznie działającej właściwości Document.documentURI
.
Trzeba wyraźnie zaznaczyć, że za pomocą właściwości URL
nie można zmienić aktualnie załadowanej strony. W razie potrzeby należy skorzystać z innych właściwości zależnych od kontekstu, jak chociażby z Window.location
, Document.location
, HTMLIFrameElement.src
czy HTMLFrameElement.src
definiowanych w specyfikacji HTML5.
Prosty przykład:
<!DOCTYPE html>
<html>
<body>
<span id="info"></span>
<script>
function getInfoDoc(desc, whatDoc){
info.innerHTML += desc + "<br>"
+ "Interfejs: " + whatDoc + "<br>"
+ "documentURI: " + whatDoc.documentURI + "<br>"
+ "URL: " + whatDoc.URL + "<br><br>";
}
var doc = document; // domyślny dokument tworzony przez parser HTML
var info = doc.getElementById("info");
getInfoDoc("Parametry dla domyślnego dokumentu tworzonego przez parser HTML (właściwość document):", doc);
try{
var newDoc = new Document(); // nowy dokument
getInfoDoc("Parametry dla new Document():", newDoc);
}
catch(e){
info.innerHTML += "Brak obsługi konstruktora new Document() dlatego zrzucony zostanie błąd:" + "<br>"
+ e + "<br>" // opis zależny od przeglądarki
+ e.constructor + "<br><br>"; // function TypeError() { [native code] }
}
var newDocXML = document.implementation.createDocument(null, null, null); // nowy dokument XML
getInfoDoc("Parametry dla createDocument(null, null, null):", newDocXML);
var newDocHTML = document.implementation.createHTMLDocument(""); // nowy dokument HTML
getInfoDoc("Parametry dla createHTMLDocument(''):", newDocHTML);
var parser = new DOMParser(); // tworzymy nowy parser DOM
var newDocHTMLParser = parser.parseFromString("", "text/html"); // nowy dokument HTML
getInfoDoc("Parametry dla parseFromString('', 'text/html'):", newDocHTMLParser);
var newDocXMLMLParser = parser.parseFromString("", "text/xml"); // nowy dokument XML
getInfoDoc("Parametry dla parseFromString('', 'text/xml'):", newDocXMLMLParser);
var newIframe = document.createElement("iframe"); // nowa ramka
newIframe.src = "http://www.crimsteam.site90.net/pliki/ogolne/js/testerkodu1/testerkodu1.htm";
document.documentElement.appendChild(newIframe);
getInfoDoc("Parametry dla ramki (przed jej wczytaniem):", newIframe.contentDocument);
window.onload = function(){
getInfoDoc("Parametry dla ramki (po jej wczytaniu):", newIframe.contentDocument);
}
</script>
</body>
</html>
Na chwilę obecną jedynie przeglądarka Firefox obsługuje właściwość URL
zgodnie z najnowszymi wymaganiami specyfikacji DOM4. Pozostałe przeglądarki mają mniejsze lub większe problemy w tym obszarze.
Właściwość URL
dla węzła typu Document
pojawia się dopiero w specyfikacji DOM4. W przeszłości była ona definiowana dla interfejsu HTMLDocument w specyfikacji DOM Level 2 HTML.
Składnia Web IDL#
interface Document : Node { readonly attribute DOMString URL; };