То, что вы написали, на самом деле работает хорошо, и Chrome не отправляет события клика на него. Но мы можем добавить eventListener
, чтобы переопределить все, что может быть прикреплено к нему, и предотвратить распространение события с event.stopPropagation()
. Я добавил CSS, чтобы отключить подсветку / выделение текста.
Немного трудно продемонстрировать, что событие не срабатывает, но вы можете видеть, что консоль не будет регистрировать "Uh oh, I got clicked"
сообщение, даже если вы нажмете вокруг.
document.querySelectorAll(".unclickable").forEach(
element => element.addEventListener("click",
event => {
event.preventDefault();
return event.stopPropagation();
}
)
);
.unclickable * {
-webkit-touch-callout: none; /* iOS Safari */
-webkit-user-select: none; /* Safari */
-khtml-user-select: none; /* Konqueror HTML */
-moz-user-select: none; /* Old versions of Firefox */
-ms-user-select: none; /* Internet Explorer/Edge */
user-select: none; /* Non-prefixed version, currently
supported by Chrome, Opera and Firefox */
}
<div onclick="console.log('Uh oh, I got clicked')" class="unclickable right" style="display:inline-block;float:left;pointer-events:none;z-index:2">
<blockquote class="twitter-tweet">
<p lang="en" dir="ltr">Or hey, ya know, just relax and have fun. <a href="https://twitter.com/U53iZEL9O9">https://twitter.com/U53iZEL9O9</a></p>— Meg Turney (@megturney) <a href="https://twitter.com/megturney/status/1230141853246402560?ref_src=twsrc%5Etfw">February 19, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>