Я пытаюсь реализовать пользовательский метод, чтобы выяснить, находится ли элемент в текущем порту просмотра.
Ниже приведен фрагмент кода, который я пытался реализовать, но результат не отображаетлогический результат:
export const isElementInViewport = () => {
const getBoundValues = ClientFunction(() => document.querySelectorAll(".hero-getstart").item(0).getBoundingClientRect());
const windowHeight = ClientFunction(() => window.innerHeight);
const windowWidth = ClientFunction(() => window.innerWidth);
return getBoundValues.bottom > 0 && getBoundValues.right > 0 && getBoundValues.left < (windowWidth || document.documentElement.clientWidth) && getBoundValues.top < (windowHeight || document.documentElement.clientHeight);
};
Приведенный выше код работает правильно на консоли браузера, т. е. когда я пытаюсь сохранить getBoundValues
в переменной A и пытаюсь выполнить команду возврата, он выводит вывод как trueили false в зависимости от видимости элемента в окне просмотра, но в скрипте. Всегда выдает false:
Вот метод, который вызывает вышеуказанный метод:
export const verifyElementInView = () => {
const elementVisible = isElementInViewport();
console.log(elementVisible);
};
Выводвсегда ложно.
Вот фрагмент вывода, который я получаю при попытке console.log(getBoundValues)
:
{ [Function: __$$clientFunction$$]
with: [Function],
[Symbol(functionBuilder)]:
ClientFunctionBuilder {
callsiteNames:
{ instantiation: 'ClientFunction',
execution: '__$$clientFunction$$' },
fn: [Function],
options: {},
compiledFnCode: '(function(){ return (function () {return document.querySelectorAll(".hero-getstart").item(0).getBoundingClientRect();});})();',
replicator:
{ transforms: [Array],
transformsMap: [Object],
serializer: [Object] } } }
Чего мне не хватает?