I used `getBoundingClientRect` as first priority because I think it can describe the coordinate of a DOM element more precisely. Actually I assume that an object contains `getBoundingClientRect` method may only be a pure DOM element so it shouldn't have `x, y, w, h` properties on it.