Есть несколько textarea, каждая из которых имеет свой ID:
<textarea #one />
<textarea #two />
<textarea #three />
Для реализации drag-and-drop (за рамками HTMLayout) необходим способ пометить эти элементы как drop-target. Пытаюсь сделать так:
<textarea #one drop-target />
<textarea #two drop-target />
<textarea #three drop-target />
Не работает. Т.е. пытаюсь выполнить, например, такой код:
dom::element textarea = root.find_first(":drop-target");
... и в результате получаю invalid элемент.
Похоже, парсер при анализе HTML-кода данный state тупо пропускает. Ибо, если заменить "drop-target" на "expanded":
<textarea #one expanded />
<textarea #two expanded />
<textarea #three expanded />
dom::element textarea = root.find_first(":expanded");
... все начинает работать.
Можно ли сделать так, чтобы HTML-парсер добавлял в DOM
все возможные states (перечисленные в enum ELEMENT_STATE_BITS), а не только какое-то их подмножество? Или, на худой конец, добавлял states, связанные с drag-an-drop. На случай, если drag-and-drop реализуется "руками" за рамками HTMLayout.
Здравствуйте, Hawk, Вы писали:
H>Не работает. Т.е. пытаюсь выполнить, например, такой код:
H>dom::element textarea = root.find_first(":drop-target");
H>... и в результате получаю invalid элемент.
Ты же DOM атрибуты описываешь? Ну так и пиши
dom::element textarea = root.find_first("*[drop-target]");
Что означает "дай мне все элементы у которых задан аттрибут drop-target".
:drop-target это state flag который используется моей внутренней имплементацией D&D.
Т.е. его lifespan управляется изнутри.
Ты можешь сделать SetElementState(he,STATE_DROP_TARGET,0)
Или скажем в CSSS!:
*[drop-target]
{
attached!:self:drop-target = true;
}
но под свою отвественность (да и смысла особого в этом я не вижу).
Первая же моя D&D операция его сбросит.
Мой D&D механизм запускается если есть элементы с описанными
draggable:copy-move ...;
и
accept-drop: selector(select.source > option);
CSS свойствами.