Interesting. But something that a few minutes with Selenium could resolve. For each text node, check the visibility and position. If visible and the position is within the bounds of the window, append text to buffer. Else, ignore. }.
By the way: if you want to write a script for yourself for this purpose (I mean, stripping out invisible/out-of-screen tags), I think it can turn really difficult pretty fast because of the cascading nature of CSS and the possibility of the complex rules you can generate. So basically you'll have to interpret the whole CSS tree and count the position of every element, taking into account all the rules of CSS - for me it feels like implementing half of a browser's rendering engine. Oh, and have we talked about the possibility of setting a CSS property from JS? (eg. making every tag hidden and then show the 'true' e-mail address after the JS has loaded)