window.innerWidth дает всю ширину внутри рамки окна, игнорируя полосы прокрутки.
document.body.clientWidth дает ширину внутри вертикальной полосы прокрутки - если есть.
Они обе работают на текущих версиях Safari и Chrome - я просто дал им небольшую попытку.
Оба должны работать во всех современных браузерах, проверьте здесь
window.innerWidth и здесь для document.body.clientWidth .
Мне было бы интересно узнать какие-либо обстоятельства, когда они не работают так, как рекламируется.
(Конечно, если вы выполнили код в точности так, как вы его показали, в итоге вы получите только значение document.body.clientWidth. Я предполагаю, что вы имели в виду, что вы пробовали каждый из них по очереди.)