$('#canvasID')
использует jQuery для извлечения элемента.
document.getElementById('canvasID');
использует собственную реализацию браузера для извлечения элемента по его идентификатору.
Реализация $("#canvasID")
отличается в разных браузерах, но я подозреваю, что на самом деле он использует document.getElementByID()
под капотом во всех современных браузерах.
Причина, по которой вы не можете использовать offset
со вторым методом, заключается в том, что это метод объекта jQueryкоторый возвращается из $('#canvasID');
).