Programowanie w rzutki - HTML DOM
Każda strona internetowa znajduje się w oknie przeglądarki, które można traktować jako obiekt.
ZA Document objectreprezentuje dokument HTML wyświetlany w tym oknie. Obiekt Document ma różne właściwości odnoszące się do innych obiektów, które umożliwiają dostęp do treści dokumentu i modyfikację.
Sposób uzyskiwania dostępu do treści dokumentu i jego modyfikowania nazywany jest Document Object Modellub DOM. Obiekty są zorganizowane w hierarchię. Ta hierarchiczna struktura dotyczy organizacji obiektów w dokumencie sieci Web.
Window- Najwyższe miejsce w hierarchii. Jest to najdalszy element hierarchii obiektów.
Document- Każdy dokument HTML ładowany do okna staje się obiektem dokumentu. Dokument zawiera zawartość strony.
Elements- reprezentują zawartość strony internetowej. Przykłady obejmują pola tekstowe, tytuł strony itp.
Nodes - często są elementami, ale mogą to być również atrybuty, tekst, komentarze i inne typy DOM.
Oto prosta hierarchia kilku ważnych obiektów DOM -
Dart zapewnia dart:htmlbiblioteka do manipulowania obiektami i elementami w DOM. Aplikacje konsolowe nie mogą używać rozszerzeniadart:htmlbiblioteka. Aby korzystać z biblioteki HTML w aplikacjach internetowych, importujdart:html -
import 'dart:html';
Idąc dalej, omówimy niektóre DOM Operations w następnej sekcji.
Znajdowanie elementów DOM
Plik dart:html Biblioteka udostępnia querySelector funkcję wyszukiwania elementów w DOM.
Element querySelector(String selectors);
Plik querySelector() funkcja zwraca pierwszy element, który pasuje do określonej grupy selektorów. "selectors powinien być ciągiem przy użyciu składni selektora CSS, jak podano poniżej
var element1 = document.querySelector('.className');
var element2 = document.querySelector('#id');
Przykład: Manipulowanie DOM
Wykonaj czynności podane poniżej, w środowisku IDE Webstorm -
Step 1 - Plik Nowy projekt → W lokalizacji podaj nazwę projektu w postaci DemoWebApp.
Step 1 - W sekcji „Generuj przykładową treść” wybierz SimpleWebApplication.
Stworzy przykładowy projekt, DemoWebApp. Tam jestpubspec.yaml plik zawierający zależności, które należy pobrać.
name: 'DemoWebApp'
version: 0.0.1
description: An absolute bare-bones web app.
#author: Your Name <[email protected]>
#homepage: https://www.example.com
environment:
sdk: '>=1.0.0 <2.0.0'
dependencies:
browser: '>=0.10.0 <0.11.0' dart_to_js_script_rewriter: '^1.0.1'
transformers:
- dart_to_js_script_rewriter
Jeśli masz połączenie z Internetem, zostaną one pobrane automatycznie, w przeciwnym razie możesz kliknąć prawym przyciskiem myszy plik pubspec.yaml i pobierz zależności.
W folderze internetowym znajdziesz trzy pliki: Index.html, main.dart, i style.css
Index.html
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<meta http-equiv = "X-UA-Compatible" content = "IE = edge">
<meta name = "viewport" content = "width = device-width, initial-scale = 1.0">
<meta name = "scaffolded-by" content = "https://github.com/google/stagehand">
<title>DemoWebApp</title>
<link rel = "stylesheet" href = "styles.css">
<script defer src = "main.dart" type = "application/dart"></script>
<script defer src = "packages/browser/dart.js"></script>
</head>
<body>
<h1>
<div id = "output"></div>
</h1>
</body>
</html>
Main.dart
import 'dart:html';
void main() {
querySelector('#output').text = 'Your Dart web dom app is running!!!.';
}
Uruchom index.htmlplik; zobaczysz na ekranie następujące dane wyjściowe.
Obsługa zdarzeń
Plik dart:html Biblioteka udostępnia onClickwydarzenie dla elementów DOM. Składnia pokazuje, jak element może obsłużyć strumień zdarzeń kliknięcia.
querySelector('#Id').onClick.listen(eventHanlderFunction);
Plik querySelector() funkcja zwraca element z danego DOM i onClick.listen() zajmie eventHandlermetoda, która zostanie wywołana po wywołaniu zdarzenia kliknięcia. SkładniaeventHandler podano poniżej -
void eventHanlderFunction (MouseEvent event){ }
Weźmy teraz przykład, aby zrozumieć koncepcję obsługi zdarzeń w Dart.
TestEvent.html
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<meta http-equiv = "X-UA-Compatible" content = "IE = edge">
<meta name = "viewport" content = "width = device-width, initial-scale = 1.0">
<meta name = "scaffolded-by" content ="https://github.com/google/stagehand">
<title>DemoWebApp</title>
<link rel = "stylesheet" href = "styles.css">
<script defer src = "TestEvent.dart" type="application/dart"></script>
<script defer src = "packages/browser/dart.js"></script>
</head>
<body>
<div id = "output"></div>
<h1>
<div>
Enter you name : <input type = "text" id = "txtName">
<input type = "button" id = "btnWish" value="Wish">
</div>
</h1>
<h2 id = "display"></h2>
</body>
</html>
TestEvent.dart
import 'dart:html';
void main() {
querySelector('#btnWish').onClick.listen(wishHandler);
}
void wishHandler(MouseEvent event){
String name = (querySelector('#txtName') as InputElement).value;
querySelector('#display').text = 'Hello Mr.'+ name;
}