Programmazione Dart - HTML DOM
Ogni pagina web risiede all'interno di una finestra del browser che può essere considerata come un oggetto.
UN Document objectrappresenta il documento HTML visualizzato in quella finestra. L'oggetto Document ha varie proprietà che fanno riferimento ad altri oggetti che consentono l'accesso e la modifica del contenuto del documento.
Il modo in cui si accede e si modifica il contenuto di un documento è chiamato Document Object Model, o DOM. Gli oggetti sono organizzati in una gerarchia. Questa struttura gerarchica si applica all'organizzazione degli oggetti in un documento Web.
Window- In cima alla gerarchia. È l'elemento più esterno della gerarchia degli oggetti.
Document- Ogni documento HTML che viene caricato in una finestra diventa un oggetto documento. Il documento contiene il contenuto della pagina.
Elements- rappresentare il contenuto su una pagina web. Gli esempi includono le caselle di testo, il titolo della pagina ecc.
Nodes - sono spesso elementi, ma possono anche essere attributi, testo, commenti e altri tipi di DOM.
Ecco una semplice gerarchia di alcuni importanti oggetti DOM:
Dart fornisce il dart:htmllibreria per manipolare oggetti ed elementi nel DOM. Le applicazioni basate su console non possono utilizzare l'estensionedart:htmlbiblioteca. Per utilizzare la libreria HTML nelle applicazioni web, importadart:html -
import 'dart:html';
Andando avanti, ne discuteremo alcuni DOM Operations nella prossima sezione.
Trovare elementi DOM
Il dart:html library fornisce il querySelector funzione per cercare elementi nel DOM.
Element querySelector(String selectors);
Il querySelector() restituisce il primo elemento che corrisponde al gruppo di selettori specificato. "selectors dovrebbe essere una stringa utilizzando la sintassi del selettore CSS come indicato di seguito
var element1 = document.querySelector('.className');
var element2 = document.querySelector('#id');
Esempio: manipolazione di DOM
Segui i passaggi indicati di seguito, nell'IDE Webstorm -
Step 1 - File NewProject → Nella posizione, fornire il nome del progetto come DemoWebApp.
Step 1 - Nella sezione "Genera contenuto di esempio", seleziona SimpleWebApplication.
Creerà un progetto di esempio, DemoWebApp. C'è unpubspec.yaml file contenente le dipendenze che devono essere scaricate.
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
Se sei connesso al Web, questi verranno scaricati automaticamente, altrimenti puoi fare clic con il pulsante destro del mouse sul file pubspec.yaml e ottieni le dipendenze.
Nella cartella web troverai tre file: Index.html, main.dart, e 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!!!.';
}
Corri il index.htmlfile; vedrai il seguente output sullo schermo.
Gestione degli eventi
Il dart:html library fornisce il onClickevento per elementi DOM. La sintassi mostra come un elemento può gestire un flusso di eventi di clic.
querySelector('#Id').onClick.listen(eventHanlderFunction);
Il querySelector() funzione restituisce l'elemento dal DOM dato e onClick.listen() prenderà un eventHandlermetodo che verrà richiamato quando viene generato un evento click. La sintassi dieventHandler è dato di seguito -
void eventHanlderFunction (MouseEvent event){ }
Facciamo ora un esempio per comprendere il concetto di gestione degli eventi in 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;
}