What’s the difference between window.location and document.location in JavaScript?

What’s the difference between window.location and document.location in JavaScript?

Should both of them reference the same object?

Solutions/Answers:

Solution 1:

According to the W3C, they are the same. In reality, for cross browser safety, you should use window.location rather than document.location.

See: http://www.w3.org/TR/html/browsers.html#dom-location

Solution 2:

The canonical way to get the current location object is window.location (see this MSDN page from 1996 and the W3C draft from 2006).

Compare this to document.location, which originally only returned the current URL as a string (see this page on MSDN). Probably to avoid confusion, document.location was replaced with document.URL (see here on MSDN), which is also part of DOM Level 1.

As far as I know, all modern browsers map document.location to window.location, but I still prefer window.location as that’s what I’ve used since I wrote my first DHTML.

Solution 3:

window.location is read/write on all compliant browsers.

document.location is read-only in Internet Explorer (at least), but read/write in Gecko-based browsers (Firefox, SeaMonkey).

Related:  Will Dart support the use of existing JavaScript libraries?

Solution 4:

document.location was originally a read-only property, although Gecko browsers allow you to assign to it as well. For cross-browser safety, use window.location instead.

Read more:

document.location

window.location

Solution 5:

Interestingly, if you have a frame, image, or form named ‘location’, then ‘document.location’ provides a reference to the frame window, image, or form, respectively, instead of the Location object. Apparently, this is because the document.forms, document.images, and window.frames collection name lookup gets priority over the mapping to window.location.

<img name='location' src='location.png'>

if (document.location.tagName == 'IMG') alert('Hello!')

Solution 6:

As far as I know, Both are same. For cross browser safety you can use window.location rather than document.location.

All modern browsers map document.location to window.location, but I still prefer window.location as that’s what I’ve used since I wrote my first web page. it is more consistent.

you can also see document.location === window.location returns true, which clarifies that both are same.