웹 페이지 DOM 수정
웹 페이지의 문서 객체 모델(DOM)을 조작하여 요소와 해당 속성을 추가, 제거 또는 변경합니다.
웹 페이지 DOM 수정은(는) CoddyKit의 무료 Browser Extensions Development (Chrome & Edge) 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Browser Extensions Development (Chrome & Edge) 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Browser Extensions Development (Chrome & Edge) 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
Intro to DOM Modification
Welcome to modifying web page content! This lesson teaches you how to change what users see on a website using your extension.
We'll dive into the Document Object Model (DOM), which is like a tree structure representing all the elements on a web page. Your extension's content scripts can interact with this tree.
Finding Elements on a Page
Before you can change an element, you need to find it! JavaScript provides several ways to select elements from the DOM.
document.querySelector(): Finds the first element matching a CSS selector.document.querySelectorAll(): Finds all elements matching a CSS selector.document.getElementById(): Finds an element by its unique ID.
These are your primary tools for targeting specific parts of a web page.
Accessing Elements: Demo
Let's see how to grab an element. Imagine a web page has a paragraph with the ID 'myParagraph' and several other paragraphs.
Try running this code:
// This code would run in your content script.
// It assumes a page with a <p id="myParagraph"> and other <p> tags.
const specificParagraph = document.getElementById('myParagraph');
const allParagraphs = document.querySelectorAll('p');
if (specificParagraph) {
console.log('Found specific paragraph:', specificParagraph.textContent);
}
console.log('Total paragraphs on page:', allParagraphs.length);
// For demonstration, we'll change a dummy element if it exists.
// In a real scenario, this would modify the live page.
const dummyDiv = document.createElement('div');
dummyDiv.id = 'coddykit-output';
document.body.append(dummyDiv);
if (specificParagraph) {
dummyDiv.textContent = `Found by ID: ${specificParagraph.textContent}. Total Ps: ${allParagraphs.length}`;
} else {
dummyDiv.textContent = `No #myParagraph found. Total Ps: ${allParagraphs.length}`;
}Updating Text Content
Once you have an element, changing its text is straightforward. You can use the textContent property.
textContent sets or returns the text content of the specified node and all its descendants. It's generally preferred over innerText for performance and security.
Changing Text: Demo
Let's update the text of the first heading on a page. This is a common task for extensions that want to add information or warnings.
What do you think this will do to the page's main heading?
// This code would run in your content script.
// It assumes the page has at least one <h1> element.
const mainHeading = document.querySelector('h1');
if (mainHeading) {
mainHeading.textContent = '🥳 This Heading Was Modified by CoddyKit!';
mainHeading.style.color = 'blue'; // Add some style for visibility
} else {
// If no h1, create one to show the effect
const newHeading = document.createElement('h1');
newHeading.textContent = '🥳 New Heading from CoddyKit!';
newHeading.style.color = 'blue';
document.body.prepend(newHeading);
}Altering Element Attributes
Elements often have attributes like src for images, href for links, or class for styling. You can change these too!
element.setAttribute(name, value): Adds or updates an attribute.element.removeAttribute(name): Removes an attribute.element.classList.add(className): Adds a CSS class.element.classList.remove(className): Removes a CSS class.
Attributes & Classes: Demo
Let's change an image's source and add a class to a paragraph. Imagine you want to replace a placeholder image or highlight certain text.
Try running this example:
// This code would run in your content script.
// It assumes a page has an <img> and a <p> element.
const firstImage = document.querySelector('img');
const firstParagraph = document.querySelector('p');
if (firstImage) {
firstImage.setAttribute('src', 'https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png');
firstImage.setAttribute('alt', 'CoddyKit Replaced Image');
firstImage.style.border = '2px solid green'; // Make changes visible
}
if (firstParagraph) {
firstParagraph.classList.add('coddykit-highlight');
// Add some inline style for the added class for visibility
firstParagraph.style.backgroundColor = '#ffff0050'; // Light yellow tint
firstParagraph.style.padding = '5px';
firstParagraph.textContent += ' (Highlighted by CoddyKit!)';
} else {
const newP = document.createElement('p');
newP.textContent = 'This is a new paragraph with a highlight!';
newP.classList.add('coddykit-highlight');
newP.style.backgroundColor = '#ffff0050';
newP.style.padding = '5px';
document.body.append(newP);
}Creating & Adding New Elements
Extensions can also inject entirely new content into a page! This is how you might add custom buttons, sidebars, or notifications.
document.createElement(tagName): Creates a new element node.parentNode.appendChild(childNode): Adds a node as the last child of a parent.parentNode.prepend(childNode): Adds a node as the first child of a parent.parentNode.insertBefore(newNode, referenceNode): Inserts a node before a reference node.
Injecting Elements: Demo
Let's create a new div element and add it to the very top of the web page's body.
This demonstrates how an extension can seamlessly integrate new UI elements.
// This code would run in your content script.
const newDiv = document.createElement('div');
newDiv.textContent = '👋 Hello from your CoddyKit Extension!';
newDiv.style.backgroundColor = '#ADD8E6'; // Light blue background
newDiv.style.padding = '10px';
newDiv.style.textAlign = 'center';
newDiv.style.borderBottom = '1px solid #87CEEB';
newDiv.style.position = 'sticky';
newDiv.style.top = '0';
newDiv.style.width = '100%';
newDiv.style.zIndex = '9999';
document.body.prepend(newDiv); // Add to the top of the body
// You can also remove elements:
// const elementToRemove = document.querySelector('.some-ad-class');
// if (elementToRemove) {
// elementToRemove.remove();
// }Quick Check: DOM Actions
Which of the following JavaScript methods can be used to add, remove, or modify elements on a web page?
Recap: Modifying Web Pages
Great job! You've learned the core techniques for interacting with and modifying a web page's structure and content using content scripts.
- You can find elements using
querySelector,querySelectorAll, andgetElementById. - You can change text with
textContent. - You can alter attributes and classes with
setAttribute,removeAttribute,classList.add, andclassList.remove. - You can create and inject new elements using
createElementand methods likeappendChildorprepend. - You can remove elements with
element.remove().
These powerful tools allow your extension to truly customize the user's browsing experience. Next, we'll explore how to interact with the data on these pages!
자주 묻는 질문
“웹 페이지 DOM 수정” 강의는 무료인가요?
네 — “웹 페이지 DOM 수정” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Browser Extensions Development (Chrome & Edge) 강의 전체를 잠금 해제할 수 있습니다. Browser Extensions Development (Chrome & Edge) 강의에는 총 4개의 강의가 포함되어 있습니다.
“웹 페이지 DOM 수정”에서 뭘 배우나요?
웹 페이지의 문서 객체 모델(DOM)을 조작하여 요소와 해당 속성을 추가, 제거 또는 변경합니다. 브라우저에서 직접 실행하는 실습 코드로 Browser Extensions Development (Chrome & Edge)을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Browser Extensions Development (Chrome & Edge)을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Browser Extensions Development (Chrome & Edge)은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“웹 페이지 DOM 수정” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Browser Extensions Development (Chrome & Edge) 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Browser Extensions Development (Chrome & Edge) 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 콘텐츠 스크립트 주입
- 웹 페이지 DOM 수정
- 웹 페이지 데이터와 상호 작용
- CSS 삽입과 격리된 스타일 지정