как сделать DIV unfocusable?

Интуитивный способ рассуждать о линеаризации - это ссылка на порядок построения и визуализацию линейной иерархии.

Вы могли бы так думать. Сначала создается базовый класс; но прежде, чем он сможет построить базовый класс, сначала должны быть построены его суперклассы / черты (это означает, что конструкция начинается в верхней части иерархии). Для каждого класса в иерархии смешанные черты строятся слева направо, потому что черта справа добавляется «позже» и, таким образом, имеет шанс «переопределить» предыдущие черты. Однако, подобно классам, для того, чтобы построить признак, его базовые черты должны быть построены первыми (очевидными); и, вполне разумно, если черта уже построена (в любом месте иерархии), она не восстанавливается снова. Теперь порядок построения является обратной линеаризации. Подумайте о «базовых» чертах / классах как более высоких в линейной иерархии, а черты ниже в иерархии ближе к классу / объекту, который является предметом линеаризации. Линеаризация влияет на то, как «супер» разрешается в признаке: он будет решать ближайший базовый признак (выше в иерархии).

Таким образом:

var d = new A with D with C with B;

Линеаризация A with D with C with B является

  • (верхняя часть иерархии) A (построенная сначала как базовый класс)
  • линеаризация DA (не рассматриваемая как A, предшествует) D (D расширяет A)
  • линеаризация СА (не рассматривается как А происходит раньше) B (B продолжается A) C (C продолжается B)
  • линеаризация BA (не рассматривается как A происходит до) B ( не рассматривается как B, предшествует)

Таким образом, линеаризация: ADBC. Вы можете думать об этом как о линейной иерархии, где A - корень (самый высокий) и построен сначала, а C - лист (самый низкий) и построенный последним. [3] С учетом этих интуитивных правил d.foo вызывает C.foo, который возвращает «C», за которым следует super.foo(), который разрешен на B (черта слева от B, т.е. выше / до, в линеаризации), которая возвращает «B», а затем super.foo(), которая разрешена на D, которая возвращает «D», а затем super.foo(), который разрешен на A, который, наконец, возвращает «A». Итак, у вас есть «CBDA».

В качестве другого примера я подготовил следующее:

class X { print("X") }
class A extends X { print("A") }
trait H { print("H") }
trait S extends H { print("S") }
trait R { print("R") }
trait T extends R with H { print("T") }
class B extends A with T with S { print("B") }

new B  // X A R H T S B     (the prints follow the construction order)

// Linearization is the reverse of the construction order.
// Note: the rightmost "H" wins (traits are not re-constructed)
// lin(B) = B >> lin(S) >> lin(T) >> lin(A)
//        = B >> (S >> H) >> (T >> H >> R) >> (A >> X)
//        = B >> S >> T >> H >> R >> A >> X
14
задан Morgan Cheng 4 April 2009 в 01:08
поделиться

3 ответа

<div> не должно быть способно к получению фокуса, если Вы не добавили tabIndex.

Если Вы добавили tabIndex, необходимо удалить его

document.getElementById("yourElement").removeAttribute("tabIndex");
22
ответ дан 1 December 2019 в 06:43
поделиться

Я не уверен, можно ли сделать элемент 'un-focusable', но можно, конечно, не сфокусировать его в отдельном моменте во время с помощью blur метод:

document.getElementById("myElement").blur();

Править:

Я думаю, что можно сделать элемент 'un-focusable' путем дефокусировки его каждый раз, когда это фокусируется. Можно выполнить это через:

document.getElementById("myElement").onfocus = function() {
    this.blur();
};

... или (использующий встроенный JavaScript в Вашем HTML):

<div onfocus="this.blur();"></div>

Steve

4
ответ дан 1 December 2019 в 06:43
поделиться

Легкая фиксация могла быть сделана путем добавления CSS:

div_selector{
    pointer-events: none;
}

Или Путем добавления той же CSS с помощью jQuery:

$(div_selector).css('pointer-events', 'none');

0
ответ дан 1 December 2019 в 06:43
поделиться
Другие вопросы по тегам:

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