монтировать файловую систему с модулем ядра

Я принял ответ @ meouw, добавленный в clientLeft, который разрешает границу, а затем создал три версии:

getAbsoluteOffsetFromBody - похоже на @ meouw's, это получает абсолютное положение относительно тела или элемент html документа (в зависимости от режима quirks)

getAbsoluteOffsetFromGivenElement - возвращает абсолютную позицию относительно данного элемента (relativeEl). Обратите внимание, что данный элемент должен содержать элемент el, иначе он будет вести себя так же, как getAbsoluteOffsetFromBody. Это полезно, если у вас есть два элемента, содержащиеся в другом (известном) элементе (необязательно несколько узлов вверх по дереву узлов) и хотите сделать их одинаковыми.

getAbsoluteOffsetFromRelative - возвращает абсолютное положение относительно первого родительский элемент с положением: относительный. Это похоже на getAbsoluteOffsetFromGivenElement по той же причине, но будет идти только до первого элемента соответствия.

getAbsoluteOffsetFromBody = function( el )
{   // finds the offset of el from the body or html element
    var _x = 0;
    var _y = 0;
    while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) )
    {
        _x += el.offsetLeft - el.scrollLeft + el.clientLeft;
        _y += el.offsetTop - el.scrollTop + el.clientTop;
        el = el.offsetParent;
    }
    return { top: _y, left: _x };
}

getAbsoluteOffsetFromGivenElement = function( el, relativeEl )
{   // finds the offset of el from relativeEl
    var _x = 0;
    var _y = 0;
    while( el && el != relativeEl && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) )
    {
        _x += el.offsetLeft - el.scrollLeft + el.clientLeft;
        _y += el.offsetTop - el.scrollTop + el.clientTop;
        el = el.offsetParent;
    }
    return { top: _y, left: _x };
}

getAbsoluteOffsetFromRelative = function( el )
{   // finds the offset of el from the first parent with position: relative
    var _x = 0;
    var _y = 0;
    while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) )
    {
        _x += el.offsetLeft - el.scrollLeft + el.clientLeft;
        _y += el.offsetTop - el.scrollTop + el.clientTop;
        el = el.offsetParent;
        if (el != null)
        {
            if (getComputedStyle !== 'undefined')
                valString = getComputedStyle(el, null).getPropertyValue('position');
            else
                valString = el.currentStyle['position'];
            if (valString === "relative")
                el = null;
        }
    }
    return { top: _y, left: _x };
}

Если у вас по-прежнему возникают проблемы, особенно связанные с прокруткой, вы можете попробовать посмотреть http://www.greywyvern.com/?post=331 - Я заметил в getStyle хотя бы один кусок сомнительного кода, который должен быть в порядке, если браузеры ведут себя, но не тестировали остальное вообще.

1
задан mah454 23 February 2019 в 06:52
поделиться

1 ответ

<sys/mount.h> - это заголовок пользовательского пространства, его нельзя использовать для модуля ядра.

В ядре API для монтирования файловой системы используется ksys_mount() или do_mount(), но он не экспортируется в модули. Если вы действительно хотите монтировать из модуля ядра (а модификация ядра вам не подходит), вам придется дублировать пути ksys_mount () в вашем коде.

0
ответ дан Nikita Yushchenko 23 February 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: