Каждый вопрос, который пытается удалить пространство между 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>
Это потому, что это так. window.event
предназначен для более старых версий IE.
Типичный способ сделать это:
function postBackByObject(e) {
e = e || window.event;
var o = e.srcElement || e.target;
// ...
}
Я не уверен, поддерживается ли window.event во всех браузерах. Я думаю, что вы получаете событие в переменной «e» postBackByObject (e)
Пропустите событие в событии onClick
следующим образом:
onclick="myCustomFunction(event);"
Он работает, и вы можете получить доступ к объекту события!
Вы добавляете события 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
функция остается неизменной при использовании этого подхода.
Прикрепление события - это решение, но есть альтернатива, которая может быть полезна для других людей, сталкивающихся с одной и той же проблемой, после долгого поиска я узнал, что:
Объект события только реконструирован по firefox, если вы явно передаете «событие» из функции
blockquote>Таким образом, проблема возникает из-за того, что
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);"
В объявлении inline можно передать объект события:
<input type="button" onclick="postBackByObject(event);" value="click" />
function postBackByObject(e) {
var o = e.srcElement || e.target;
// ...
}
Ваша строка
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
.