123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- function insert_visiability_info() {
- function get_body() {
- var body = document.getElementsByTagName('body')[0]
- return body
- }
- function insert_info(element) {
- is_visiable = element.offsetParent !== null
- element.setAttribute('is_visiable', is_visiable)
- if (is_visiable) {
- react = element.getBoundingClientRect()
- coordinate = JSON.stringify(react)
- element.setAttribute('coordinate', coordinate)
- }
- }
- function iter_node(node) {
- children = node.children
- insert_info(node)
- if (children.length !== 0) {
- for(const element of children) {
- iter_node(element)
- }
- }
- }
- function sizes() {
- let contentWidth = [...document.body.children].reduce(
- (a, el) => Math.max(a, el.getBoundingClientRect().right), 0)
- - document.body.getBoundingClientRect().x;
-
- return {
- windowWidth: document.documentElement.clientWidth,
- windowHeight: document.documentElement.clientHeight,
- pageWidth: Math.min(document.body.scrollWidth, contentWidth),
- pageHeight: document.body.scrollHeight,
- screenWidth: window.screen.width,
- screenHeight: window.screen.height,
- pageX: document.body.getBoundingClientRect().x,
- pageY: document.body.getBoundingClientRect().y,
- screenX: -window.screenX,
- screenY: -window.screenY - (window.outerHeight-window.innerHeight),
- }
- }
- function insert_page_info() {
- page_info = sizes()
- node = document.createElement('meta')
- node.setAttribute('name', 'page_visiability_info')
- node.setAttribute('page_info', JSON.stringify(page_info))
- document.getElementsByTagName('head')[0].appendChild(node)
- }
-
- insert_page_info()
- body = get_body()
- iter_node(body)
- }
|