childNodes включает текстовые ноды(переводы строк итд...), используйте children для получения только элементов. А для количества спиногрызов можно использовать и childElementCount.
В canvas нельзя работать одновременно в нескольких контекстах. Поэтому в консоли пробуете получить canvas.getContext('2d') если возвращает объект - значит 2D, если нет - WebGL.