W3Schools Tryit Editor

[フレーム]
Get your own Node server
const readline = require('readline');
// Create the interface
const rl = readline.createInterface({
 input: process.stdin,
 output: process.stdout
});
// Function to prompt for masked input
function promptPassword(query) {
 return new Promise((resolve) => {
 // Create a hidden readline instance to control input/output
 const stdin = process.stdin;
 
 // Save the original configuration
 const originalStdinIsTTY = stdin.isTTY;
 if (originalStdinIsTTY) {
 stdin.setRawMode(true);
 }
 
 let password = '';
 
 // Write the query
 process.stdout.write(query);
 
 // Handle keypress events
 const onData = (key) => {
 // Ctrl+C
 if (key.toString() === '\u0003') {
 process.stdout.write('\n');
 process.exit();
 }
 
 // Enter key
 if (key.toString() === '\r' || key.toString() === '\n') {
 if (originalStdinIsTTY) {
 stdin.setRawMode(false);
 }
 stdin.removeListener('data', onData);
 process.stdout.write('\n');
 resolve(password);
 return;
 }
 
 // Backspace
 if (key.toString() === '\u0008' || key.toString() === '\u007f') {
 if (password.length> 0) {
 password = password.slice(0, -1);
 process.stdout.write('\b \b'); // Erase last character
 }
 return;
 }
 
 // Regular character
 password += key.toString();
 process.stdout.write('*'); // Show asterisk for each character
 };
 
 stdin.on('data', onData);
 });
}
// Example usage
async function login() {
 const username = await new Promise((resolve) => {
 rl.question('Username: ', (answer) => {
 resolve(answer);
 });
 });
 
 const password = await promptPassword('Password: ');
 
 console.log(`\nAttempting login for user: ${username}`);
 
 // Simulate authentication check
 if (username === 'admin' && password === 'password') {
 console.log('Login successful!');
 } else {
 console.log('Invalid username or password');
 }
 
 rl.close();
}
// Start the login process
login();
 
Username: admin
Password: ********
Attempting login for user: admin
Login successful!

AltStyle によって変換されたページ (->オリジナル) /