It turns out that you CAN get some of the data you need, like the nonviewport height of the browser window and it's position on screen. It helps to go back and re-read the documenation I haven't read in the last decade.
<html>
<head>
<title>Screen Coord Test</title>
<style>
button {
margin-left: 100;
}
</style>
</head>
<body>
<h1>Script Test</h1>
<button id="testId" type="button">Test Button</button>
<script type="text/javascript">
var element = document.getElementById('testId');
var position = element.getBoundingClientRect();
var buttonX = position.left;
var buttonY = position.top;
var windowX = window.screenX;
var windowY = window.screenY;
var nonViewportHeight = window.outerHeight - window.innerHeight;
console.log('Window coords: ', windowX,',', windowY);
console.log('NonViewport Height: ', nonViewportHeight);
console.log('Button CSS coords: ', buttonX,',', buttonY);
console.log('Button screen coords: ', (buttonX + windowX) ,',', (buttonY + windowY + nonViewportHeight));
</script>
</body>
</html>