Skip to content

Commit

Permalink
Merge pull request javascript-tutorial#3609 from WOLFRIEND/master
Browse files Browse the repository at this point in the history
Add WeakRef and FinalizationRegistry article
  • Loading branch information
iliakan authored Nov 15, 2023
2 parents 285083f + 8ab6b39 commit 5ab1ce2
Show file tree
Hide file tree
Showing 22 changed files with 1,787 additions and 0 deletions.
483 changes: 483 additions & 0 deletions 1-js/99-js-misc/07-weakref-finalizationregistry/article.md

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
.app {
display: flex;
flex-direction: column;
gap: 16px;
}

.start-messages {
width: fit-content;
}

.window {
width: 100%;
border: 2px solid #464154;
overflow: hidden;
}

.window__header {
position: sticky;
padding: 8px;
display: flex;
justify-content: space-between;
align-items: center;
background-color: #736e7e;
}

.window__title {
margin: 0;
font-size: 24px;
font-weight: 700;
color: white;
letter-spacing: 1px;
}

.window__button {
padding: 4px;
background: #4f495c;
outline: none;
border: 2px solid #464154;
color: white;
font-size: 16px;
cursor: pointer;
}

.window__body {
height: 250px;
padding: 16px;
overflow: scroll;
background-color: #736e7e33;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<!DOCTYPE HTML>
<html lang="en">

<head>
<meta charset="utf-8">
<link rel="stylesheet" href="index.css">
<title>WeakRef DOM Logger</title>
</head>

<body>

<div class="app">
<button class="start-messages">Start sending messages</button>
<div class="window">
<div class="window__header">
<p class="window__title">Messages:</p>
<button class="window__button">Close</button>
</div>
<div class="window__body">
No messages.
</div>
</div>
</div>


<script type="module" src="index.js"></script>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
const startMessagesBtn = document.querySelector('.start-messages'); // (1)
const closeWindowBtn = document.querySelector('.window__button'); // (2)
const windowElementRef = new WeakRef(document.querySelector(".window__body")); // (3)

startMessagesBtn.addEventListener('click', () => { // (4)
startMessages(windowElementRef);
startMessagesBtn.disabled = true;
});

closeWindowBtn.addEventListener('click', () => document.querySelector(".window__body").remove()); // (5)


const startMessages = (element) => {
const timerId = setInterval(() => { // (6)
if (element.deref()) { // (7)
const payload = document.createElement("p");
payload.textContent = `Message: System status OK: ${new Date().toLocaleTimeString()}`;
element.deref().append(payload);
} else { // (8)
alert("The element has been deleted."); // (9)
clearInterval(timerId);
}
}, 1000);
};
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 5ab1ce2

Please sign in to comment.