Event.repeat не работает в firefox [duplicate]

Каждый вопрос, который пытается удалить пространство между inline-block s, кажется мне <table> для меня ...

Попробуйте что-то вроде этого:

p {
  display: table;
}
span {
  width: 100px;
  border: 1px solid silver; /* added for visualization only*/
  display: table-cell;
}
<p>
  <span> Foo </span>
  <span> Bar </span>
</p>

12
задан Majid 25 June 2013 в 12:33
поделиться

7 ответов

Это потому, что это так. window.event предназначен для более старых версий IE.

Типичный способ сделать это:

function postBackByObject(e) {
    e = e || window.event;
    var o = e.srcElement || e.target;
    // ...
}
15
ответ дан Niet the Dark Absol 26 August 2018 в 16:21
поделиться

Я не уверен, поддерживается ли window.event во всех браузерах. Я думаю, что вы получаете событие в переменной «e» postBackByObject (e)

0
ответ дан amit 26 August 2018 в 16:21
поделиться

Пропустите событие в событии onClick следующим образом:

onclick="myCustomFunction(event);"

Он работает, и вы можете получить доступ к объекту события!

3
ответ дан bencripps 26 August 2018 в 16:21
поделиться

Вы добавляете события inline onclick="postBackByObject();"

Попробуйте передать this (цель события) на onclick="postBackByObject(this);" Измените свою функцию для обработки этого изменения:

function postBackByObject(e) {
   if (e.tagName == "INPUT" && e.type == "checkbox") {
        __doPostBack("", "");
    }
}

Лучшей альтернативой будет присоединение событий с использованием addEventListener

. Если ваша разметка выглядит следующим образом:

<div id="TvCategories" onclick="postBackByObject(this);" />

, тогда

document.getElementById('TvCategories').addEventListener('click', postBackByObject);

Ваш postBackByObject функция остается неизменной при использовании этого подхода.

6
ответ дан c.P.u1 26 August 2018 в 16:21
поделиться

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

Объект события только реконструирован по firefox, если вы явно передаете «событие» из функции

Таким образом, проблема возникает из-за того, что window.event не распознается Firefox, и решение должно передать event функции , ваш код будет выглядеть следующим образом:

function postBackByObject(e) {
   var o = e.srcElement || e.target;
   if (o.tagName === "INPUT" && o.type === "checkbox") {
        __doPostBack("", "");
    }
}

И вы все равно можете вызвать его в своей встроенной HTML-передаче event в качестве параметра:

onclick="postBackByObject(event);"
2
ответ дан chŝdk 26 August 2018 в 16:21
поделиться

В объявлении inline можно передать объект события:

<input type="button" onclick="postBackByObject(event);" value="click" />

function postBackByObject(e) {
    var o = e.srcElement || e.target;
    // ...
}
2
ответ дан Dmitry 26 August 2018 в 16:21
поделиться

Ваша строка

var o = window.event.srcElement || e.target;

не работает во всех браузерах, кроме IE, поскольку для них windows.event не определена

. Правильная формулировка будет:

var o = e ? e.target : window.event.srcElement;

Поскольку стандартно совместимые браузеры передадут событие, поскольку параметр e и цель в e.target в IE, e будут неопределенными, и вы должны использовать window.event.srcElement

. Обратите внимание, что последние версии IE поддерживают стандартную совместимую модель.

В более общей заметке, когда вы пытаетесь получить доступ к значению как a.b.c.d, тогда a.b.c должен быть определенным объектом, иначе вы получите ошибку a.b.c undefined.

1
ответ дан HBP 26 August 2018 в 16:21
поделиться
Другие вопросы по тегам:

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