Расширение других отвечает здесь
Распространение событий: Происходящие события от самого внутреннего до управления outmost.
Событие captuing: Происходящие события от наиболее удаленного до самого внутреннего управления.
addEventListener()
метод используется для позволения/запрещения получения события и распространения событий. Этот метод имеет три параметра. Если третий параметр (фаза) имеет значение true получение события, включен и если это имеет значение false распространение событий, включен (это - поведение по умолчанию).
, Если Вы хотите, чтобы и даже пузырение и получение были включены, затем присвойте обработчики 2 раза, однажды с набором параметра фазы ко лжи и однажды с набором параметра фазы к истинному как показано ниже.
<html>
<head>
<style type="text/css">
.divStyle
{
display: table-cell;
border: 5px solid black;
padding: 20px;
text-align: center;
}
</style>
</head>
<body>
<div id="DIV1" class="divStyle">
DIV 1
<div id="DIV2" class="divStyle">
DIV 2
<div id="DIV3" class="divStyle">
DIV 3
</div>
</div>
</div>
<script type="text/javascript">
var divElements = document.getElementsByTagName('div');
for (var i = 0; i < divElements.length; i++)
{
divElements[i].addEventListener("click", clickHandler, false);
divElements[i].addEventListener("click", clickHandler, true);
}
function clickHandler()
{
alert(this.getAttribute("id") + " click event handled");
}
</script>
</body>
</html>
отметьте: IE8 и более ранние версии не поддерживают addEventListener () метод. Это подразумевает, что получение события не поддерживается в IE8 и более ранних версиях, и следовательно вышеупомянутый код не будет работать в IE 8 и более ранних версиях.
Как правило, вам не следует добавлять исходные файлы из библиотек непосредственно в другие проекты. Скомпилируйте их отдельно как библиотеку и используйте их.
Для организации самой структуры каталогов библиотеки, прямо сейчас я остановился на примерно следующей структуре
(и если применимо)
Я помещаю все заголовки непосредственно в путь к библиотеке и иметь подпапку private
, которая будет содержать все, что используется только библиотекой, но никогда не должно быть общедоступным / раскрытым.
Самое большое преимущество состоит в том, что каждый проект, который я начинаю, требует только включения путь, указывающий на каталог, содержащий мои библиотеки, тогда каждое (общедоступное) включение выполняется так же, как
#include "library1/widget.h"
частные включения просто
#include "onlyinlib.h"
Это имеет ряд преимуществ:
Если вы должны включить сторонний код вместо того, чтобы просто связываться с предварительно скомпилированной версией (например, возможно, вам нужно внести в нее изменения или настройки), подумайте о ветвлении ] его во всем, что вы используете для управления исходным кодом:
Если вы используете достойную систему контроля версий, эта схема позволит вам легко обновиться до более новых версий сторонних библиотек, а затем объединить эти изменения с изменения, внесенные вами локально.
Например, предположим, что "lib1"выпускает новую версию:
Это, ИМО, единственный разумный способ выполнить обновление сторонних библиотек, в которые вы внесли локальные изменения.
Я не думаю, что есть правильный способ сделать это - это будет зависеть от того, чего именно вы пытаетесь достичь.
Вот некоторые вещи, которые вы может не знать:
Вы можете использовать относительные пути в своих проектах.
Вы можете использовать переменные среды в путях.
Вы можете добавлять каталоги в правила поиска Visual Studio.
Это дает вам немного больше контроля над тем, куда вы помещаете включаемые файлы, и если вы добавляете свои папки в правила поиска Visual Studio, вам вообще не нужно включать какие-либо пути.
Во-первых: добавьте все используемые каталоги в ваш проект, включая пути. Если возможно, добавьте их как относительные пути.
Второе: вы должны добавить в свой проект все используемые библиотеки / исходные файлы. Это можно сделать либо в проводнике проекта, либо на вкладке Project-> Linker. В последнем случае вам также придется добавить используемые каталоги в пути к библиотекам проектов.
Обычно не рекомендуется использовать пути в директивах #include.