Javascript код внутри BAS



  • Не могу понять, как правильно сделать следующее:
    Есть js код, который получает абсолютные координаты элемента -

    function getOffset( el ) {
        var _x = 0;
        var _y = 0;
        while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
            _x += el.offsetLeft - el.scrollLeft;
            _y += el.offsetTop - el.scrollTop;
            el = el.offsetParent;
        }
        return { top: _y, left: _x };
    }
    

    Как правильно сделать так, чтобы сначала определить данную функцию, а потом по ходу скрипта применять ее для нужного мне элемента ?
    Я пробовал и через Выполнить код и через JS. Безрезультатно



  • Нашел решение, но я сомневаюсь, что оно самое правильное (хотя свою функцию и выполняет)
    Блок Выполнить код

    VAR_TEST_X = 0;
    VAR_TEST_Y = 0;
    page().script("function getElemOffset( el ) {var _x = 0;var _y = 0;while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {_x += el.offsetLeft - el.scrollLeft;_y += el.offsetTop - el.scrollTop;el = el.offsetParent;}return { top: _y, left: _x };}getElemOffset(document.getElementById('MY_ID')).left")!
    VAR_TEST_X = parseInt(_result())
    page().script("function getElemOffset( el ) {var _x = 0;var _y = 0;while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {_x += el.offsetLeft - el.scrollLeft;_y += el.offsetTop - el.scrollTop;el = el.offsetParent;}return { top: _y, left: _x };}getElemOffset(document.getElementById('MY_ID')).top")!
    VAR_TEST_Y = parseInt(_result())
    

    Причем работает только со знаком "!"
    Может быть кто-то подскажет, как можно вынести функцию getElemOffset отдельно, чтобы для каждой координаты каждого элемента ее не копипастить ?



  • @azoneiro Надо просто функцию к строке приводить, это даже в вашем коде видно. Вот пример
    js.xml



  • отличный вариант, спасибо!


Log in to reply