国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

? ? ????? JS ???? ??? ??? ?? JavaScript ????: ?? ?? ? ?? ?

??? ??? ?? JavaScript ????: ?? ?? ? ?? ?

Jan 14, 2025 am 08:39 AM

JavaScript? ??? ???? ????? ? ?? ??? ?? ??? ?? ?? ? ????? ? ?? ?? ?? ??? ?????. ? ?? ???? ??????? ??? ??? ?? ???? ???? ?? ???? ?? ?? ??? ?? ?? ??? ?????.

??? ?? ???? ???? ???? ??? ???? ??? ????? ??????? ????? ??? ??? ??? ?????. ?????? ??? ???? ??? ???? ???? ??, ??? ??? ???? ??? ???? ????? ???? ?????.

??? ???? ?? ?? ??? ?? ????? ???? ??? ?????.

  • ??????(ES6)
  • ?? ???
  • Node.js(??? ???)
  • ?? ??? ???? ??

Step-by-Step Email Verification JavaScript Tutorial: Best Practices & Code Examples

???? ???? ??? ??? ??? ????? ???? ?? ???? ???? ???? ???? ? ??? ???. ?? ??? ??? ????? ?? ?? ??? ?????.

Step-by-Step Email Verification JavaScript Tutorial: Best Practices & Code Examples

??? ?? ?? ??? ???? ?? ??? ??? ??? ??? ??? ?? ?????. ??? ??? ??? ??? ??? ????? ???? ?? ?????? ???? ??? ???? ??? ? ??? ? ????.

? ???? ???? ??? ???? ??? ??? ?? ???? ?????.

  • ?? JavaScript ??? ??? ?????? ??
  • ?? ?? ??? ?? ??? ??
  • ???? ?? ??????? ??
  • ??? ??? ?? ??? ??

???? ?? ??? ?? ?? ???? ?? ?? ?? ??? ???? ?? ?? ??? ?? ??? ??? ? ?? ???? ????? ???????? ?? ??? ? ????.

??? ?? ?? ??? ???? ?? ??? ??? ??? ??? ??? ?? ?????. ??? ??? ?? ???? ??? ??? ????? ??? ?????? ?????.

??, ????? ? ??? ??? ???? ???? ???? ?? ?? ?? ??? ?? ??? ?????. ? ?? ??? ???? ??? ??? ?? ?? ??? ??? ??? ??? ??????. ??? ?????? ?????? ?????? ??? ????? ???? ????.

??? ??? ? ???? ?? ??? ???? ??? ?? ??? ?????. ???? ??? ?? ? ?? ?? ???? ??? ?????. ?????? ??? ??? ??? ???? ???? ?? ?????? ????.

???? ? ???? ?? ??? ??? ????.

  • ?? ?? ????? ??
  • ??? ???? ?? ??
  • ??? ?? ?? ? ??
  • ?? ??? ?? ?? ??

??? ??? ??? ? ??????? ??? ??? ??? ??? ??? ??? ?? ??? ??? ?????.

Step-by-Step Email Verification JavaScript Tutorial: Best Practices & Code Examples

?? JavaScript ?????? ?????? ?? ????? ?? ???? ? ????. ??? ?? ??? ???? ???? ?? ?? ??? ?? ???? ? ?? ??? ??? ?? ??? ???? ??? ? ????.

??? ??? ?? ?? ??? ??????? ??? ?? ????? ???????. ??? ? ??????? ???? ??? ???? ???? ??? ??? ???? ??? ??? ?? ??? ??? ?????.

? ????? ??? ??? ?? ?? ???? ?? ? ????.

  • ?? JavaScript ??? ???? ??? ??? ?????
  • ?? ??? ?? ??
  • ??? ?? ? ???? ?? ?? ??
  • ??? ??? ?? ??
  • ??????? ???? ?? ????? ?????

????? ? ??? ?? ???? ??? ???? ??? ?? ??? ?? ?? JavaScript ??? ???????.

?????? ??? ??

?????? ??? ??? ?? ?? ?? ????? ???? ???? ???? ??? ??? ????? ?? ??? ????. ?? JavaScript ??? ??? ??? ??? ???? ??? ??? ?? ???? ??? ?????.

RegEx ?? ??? ??

??? ??? ??? ??? ? ?? ??? ???? ?????. ?? ??? ??? 100% ???? ??? ?? ??? ?? ???? ?? ??? ??? ??? ??? ???????.

const emailRegex = /^[a-zA-Z0-9.!#$%&'* /=?^_{|}~-] @[a-zA-Z0-9-] (?:. [a-zA-Z0-9-] )*$/;`

? ??? RFC 5322 ??? ?? ??? ??? ???? ???? ??? ?????.

  • ?? ??? ??? ??(@ ?)
  • ?? @ ?? ??
  • ??? ??? ?? ??
  • ?? ????? ??? ??

?? ?? ??

??? ???? ?? ?? ?? ?? ???? ???? ???? ?? ??? ??? ?????. ? ?? ??? ??? ?? ?? ??? ?????.

`?? verifyEmail(???) {
// ??/?? ?? ??
const TrimmedEmail = email.trim();

// Basic structure check
if (!trimmedEmail) {
    return {
        isValid: false,
        error: 'Email address is required'
    };
}

// Length validation
if (trimmedEmail.length > 254) {
    return {
        isValid: false,
        error: 'Email address is too long'
    };
}

// RegEx validation
if (!emailRegex.test(trimmedEmail)) {
    return {
        isValid: false,
        error: 'Please enter a valid email address'
    };
}

// Additional checks for common mistakes
if (trimmedEmail.includes('..')) {
    return {
        isValid: false,
        error: 'Invalid email format: consecutive dots not allowed'
    };
}

return {
    isValid: true,
    error: null
};

}`

?? ?? ? ?? ??

HTML ??? ??? ?? ??? ???? ??? ???? ?????. ? ??? ?? ?? ?? ??? ????.

`document.addEventListener('DOMContentLoaded', () => {
const emailInput = document.getElementById('email');
const errorDisplay = document.getElementById('error-message');

emailInput.addEventListener('input', debounce(function(e) {
    const result = validateEmail(e.target.value);

    if (!result.isValid) {
        errorDisplay.textContent = result.error;
        emailInput.classList.add('invalid');
        emailInput.classList.remove('valid');
    } else {
        errorDisplay.textContent = '';
        emailInput.classList.add('valid');
        emailInput.classList.remove('invalid');
    }
}, 300));

});

//??? ?? ??? ???? ?? ???? ??
?? ????(func, wait) {
?? ??? ?????.
?? ?? ???Function(...args) {
const ??? = () => {
ClearTimeout(timeout);
func(...args);
};
ClearTimeout(timeout);
timeout = setTimeout(???, ??);
};
}`

?? HTML ??? ??? ????.


??="???"
> ??="???"
??
????="???"
>


? ???? ? ?? ??? ??? ???? ????.

  • ?? ??? ?? ???? ??
  • CSS ???? ???? ??? ??? ???
  • ?? ??? ?? ???
  • ???? ??
  • novalidate ??? ??? ???? ??

?????? ??? ? ?? ???? ???? ?? ?????. ?? ?? ? ??? ??????. ?? ???? ?? ???? ??????.

Step-by-Step Email Verification JavaScript Tutorial: Best Practices & Code Examples

??? ??? ??

?????? ??? ???? ???? ???? ??, ??? ??? ??? ???? ??? ???? ?????. ? ????? Node.js? Express? ???? ??? ??? ?? ???? ???? ??? ?????.

????? ??

?? ?? ???? ??? ???? ??? ??? ?????.

`const express = require('express');
const crypto = require('crypto');
const nodemailer = require('nodemailer');
const ??? = require('???');

// ????
require('dotenv').config();

const app = express();
app.use(express.json());

// ??? ?? ??
const ???? = nodemailer.createTransport({
???: process.env.SMTP_HOST,
??: process.env.SMTP_PORT,
??: ??,
??: {
???: process.env.SMTP_USER,
??: process.env.SMTP_PASS
}
});`

??? ??? ??? ????? ?? ?? ????? ??? ???? ?????.

Step-by-Step Email Verification JavaScript Tutorial: Best Practices & Code Examples

?? ?? ? ??

??? ??? ???? ?? ?? ?? ??:

`??? VerificationToken {
?? ??? ??() {
const ?? = crypto.randomBytes(32).toString('hex');
const ??At = new Date(Date.now() 24 * 60 * 60 * 1000); // 24??

// Basic structure check
if (!trimmedEmail) {
    return {
        isValid: false,
        error: 'Email address is required'
    };
}

// Length validation
if (trimmedEmail.length > 254) {
    return {
        isValid: false,
        error: 'Email address is too long'
    };
}

// RegEx validation
if (!emailRegex.test(trimmedEmail)) {
    return {
        isValid: false,
        error: 'Please enter a valid email address'
    };
}

// Additional checks for common mistakes
if (trimmedEmail.includes('..')) {
    return {
        isValid: false,
        error: 'Invalid email format: consecutive dots not allowed'
    };
}

return {
    isValid: true,
    error: null
};

}`

?? ????? ??

?? ?? ??? ??? API ?????? ?????. ? ??? ??? ?? ?? ??? ????.

`// ??? ?? ??
app.post('/api/verify-email', async (req, res) => {
?????? {
const { ??? } = req.body;

emailInput.addEventListener('input', debounce(function(e) {
    const result = validateEmail(e.target.value);

    if (!result.isValid) {
        errorDisplay.textContent = result.error;
        emailInput.classList.add('invalid');
        emailInput.classList.remove('valid');
    } else {
        errorDisplay.textContent = '';
        emailInput.classList.add('valid');
        emailInput.classList.remove('invalid');
    }
}, 300));

??? ??

?? ??? ???? ??? ??? ?????.

??? ??

? ??? 24?? ?? ?????.


});

// Basic structure check
if (!trimmedEmail) {
    return {
        isValid: false,
        error: 'Email address is required'
    };
}

// Length validation
if (trimmedEmail.length > 254) {
    return {
        isValid: false,
        error: 'Email address is too long'
    };
}

// RegEx validation
if (!emailRegex.test(trimmedEmail)) {
    return {
        isValid: false,
        error: 'Please enter a valid email address'
    };
}

// Additional checks for common mistakes
if (trimmedEmail.includes('..')) {
    return {
        isValid: false,
        error: 'Invalid email format: consecutive dots not allowed'
    };
}

return {
    isValid: true,
    error: null
};

});

// ??? ?? ??
app.get('/api/confirm-verification', async (req, res) => {
?????? {
const { ?? } = req.query;

emailInput.addEventListener('input', debounce(function(e) {
    const result = validateEmail(e.target.value);

    if (!result.isValid) {
        errorDisplay.textContent = result.error;
        emailInput.classList.add('invalid');
        emailInput.classList.remove('valid');
    } else {
        errorDisplay.textContent = '';
        emailInput.classList.add('valid');
        emailInput.classList.remove('invalid');
    }
}, 300));

});`

? ???? ??? ?? ?? ?? ??? ?????.

  • ????? ??? ?? ??
  • ?? ?? ??
  • ?? ??(?? ?? ??)
  • ?? ?? ? ??
  • HTML ???? ??? ??? ??? ???

?? ??? ?? ?? ?? ??:

`const rateLimit = require('express-rate-limit');

const verifyLimiter = rateLimit({
windowMs: 60 * 60 * 1000, // 1??
??: 5, // IP? ?? 5?
???: '?? ??? ?? ????. ??? ?? ??? ???.'
});

app.use('/api/verify-email', verifyLimiter);`

???? ??? ????? ?? ???? ?? ??? ?? ?? ? ????? ???? ???.

?? ?? ??

??? ?????? ??? ?? ???? ????? ??? ?? ??? ???? ?? ?????. ? ????? ??? ???? ????? ????? ?? ???? ???? ? ??? ?? ?? ??? ????.

?? ?? ??

??? ?? ?? ? ??? ??? ? ?? ?? ???? ??? ?????. ??? ?? ??? ?? ??? ??????.

`??? TokenManager {
?? ??? generateSecureToken() {
// ???? ?? ??? ?? crypto.randomBytes? ?????
const tokenBuffer = crypto.randomBytes(32)? ?????.

    return {
        token,
        expiresAt
    };
}

static async verify(token) {
    const user = await User.findOne({
        'verification.token': token,
        'verification.expiresAt': { $gt: Date.now() }
    });

    return user;
}

}`

??? ?? ??

?? ?? ??? ???? ?? ???? ?? ?? ? ????? ?????.

`const rateLimit = require('express-rate-limit');
const RedisStore = require('rate-limit-redis');

// ??? ?? ?? ??
const rateLimitConfig = {
// IP ?? ??
ipLimiter: {
windowMs: 60 * 60 * 1000, // 1??
??: 5, // IP? ??
?? ??: true,
?????: false,
???: (req, res) => {
res.status(429).json({
??: '?? ??? ??????. ??? ?? ??? ???.',
??? ?: Math.ceil(req.rateLimit.resetTime / 1000)
});
}
},

    // Check if email already verified
    const existingUser = await User.findOne({ email, verified: true });
    if (existingUser) {
        return res.status(400).json({
            error: 'Email already verified'
        });
    }

    // Generate verification token
    const { token, expiresAt } = await VerificationToken.generate();

    // Store or update user with verification token
    await User.findOneAndUpdate(
        { email },
        {
            email,
            verification: { token, expiresAt },
            verified: false
        },
        { upsert: true }
    );

    // Send verification email
    const verificationLink = \`${process.env.APP_URL}/verify-email?token=${token}\`;
    await transporter.sendMail({
        from: process.env.SMTP_FROM,
        to: email,
        subject: 'Verify Your Email Address',
        html: \``

};

// ?? ?? ???? ??
app.use('/api/verify-email', rateLimit(rateLimitConfig.ipLimiter));
app.use('/api/verify-email', rateLimit(rateLimitConfig.globalLimiter));`

???? ??????? ???? ?? ??? ?? ?? ?? ??? ?????.

Step-by-Step Email Verification JavaScript Tutorial: Best Practices & Code Examples

??? ?? ?? ??? ??? ????.

`??? TokenEncryption {
?? ??? ??? ??(??) {
const ???? = 'aes-256-gcm';
const key = Buffer.from(process.env.ENCRYPTION_KEY, 'hex');
const iv = crypto.randomBytes(12);

// Basic structure check
if (!trimmedEmail) {
    return {
        isValid: false,
        error: 'Email address is required'
    };
}

// Length validation
if (trimmedEmail.length > 254) {
    return {
        isValid: false,
        error: 'Email address is too long'
    };
}

// RegEx validation
if (!emailRegex.test(trimmedEmail)) {
    return {
        isValid: false,
        error: 'Please enter a valid email address'
    };
}

// Additional checks for common mistakes
if (trimmedEmail.includes('..')) {
    return {
        isValid: false,
        error: 'Invalid email format: consecutive dots not allowed'
    };
}

return {
    isValid: true,
    error: null
};

}`

?? ? ??? ???? ????? ??? ??? ?? ???? ???????.

`const ??? = require('winston');

const logger = winston.createLogger({
??: '??',
??: winston.format.json(),
????: [
??? winston.transports.File({
?? ??: 'verification-errors.log',
??: '??'
}),
??? winston.transports.File({
?? ??: 'verification-combined.log'
})
]
});

// ?? ?? ????
app.use('/api/verify-email', (req, res, next) => {
logger.info('?? ??', {
ip: req.ip,
???: req.body.email,
?????: ? ??(),
userAgent: req.headers['user-agent']
});
??();
});`

?? ??? ????? ???? ??? ??? ??? ?? ?? ??? ???? ???????.

??? ? ??

??? ??? ? ?? ??? ?? ??? ?? ???? ???? ???? ?? ???? ??? ? ????. ? ????? ?? ??? ??? ?? ?? ??? ????.

??? ??

Jest ?? Mocha? ???? ??? ?? ???? ???? ???? ???? ?????.

`describe('??? ?? ???', () => {
explain('?? ??? ??', () => {
test('??? ??? ??? ???? ???.', () => {
const validEmails = [
'user@domain.com',
'user.name@domain.com',
'??? label@domain.com'
];

emailInput.addEventListener('input', debounce(function(e) {
    const result = validateEmail(e.target.value);

    if (!result.isValid) {
        errorDisplay.textContent = result.error;
        emailInput.classList.add('invalid');
        emailInput.classList.remove('valid');
    } else {
        errorDisplay.textContent = '';
        emailInput.classList.add('valid');
        emailInput.classList.remove('invalid');
    }
}, 300));

});`

???? ?? ? ?? ??

??? ??? ??? ? ?? ???? ??? ?????.

Step-by-Step Email Verification JavaScript Tutorial: Best Practices & Code Examples

???? ??? ?? ???? ? ?? ??:

`?? ???? = {
// ?? ?? ??
trackVerification: async (???, ??, ?? = null) => {
VerificationMetric.create? ?????({
???
??
??? ??????.
?????: ? ??()
});
},

// Basic structure check
if (!trimmedEmail) {
    return {
        isValid: false,
        error: 'Email address is required'
    };
}

// Length validation
if (trimmedEmail.length > 254) {
    return {
        isValid: false,
        error: 'Email address is too long'
    };
}

// RegEx validation
if (!emailRegex.test(trimmedEmail)) {
    return {
        isValid: false,
        error: 'Please enter a valid email address'
    };
}

// Additional checks for common mistakes
if (trimmedEmail.includes('..')) {
    return {
        isValid: false,
        error: 'Invalid email format: consecutive dots not allowed'
    };
}

return {
    isValid: true,
    error: null
};

};`

??? ???? ????? ?? ?? ?? ??? ?????.

  • ??? ?? ??
  • ???? ?? ?? ??
  • ?? ???? ??
  • ??? ?? ?? ??
  • ?? ? ?? ?? ??

???? ?? ?? ? ????? ??? ????? ??? ??? ?? ?? ???? ???? ? ??? ???.

`// ?? ?? ????? ??
app.get('/health', async (req, res) => {
?????? {
const ??? = ????? ?????.healthCheck();
const ?? =metrics.successRate>= 0.95 ? '???': '??';

emailInput.addEventListener('input', debounce(function(e) {
    const result = validateEmail(e.target.value);

    if (!result.isValid) {
        errorDisplay.textContent = result.error;
        emailInput.classList.add('invalid');
        emailInput.classList.remove('valid');
    } else {
        errorDisplay.textContent = '';
        emailInput.classList.add('valid');
        emailInput.classList.remove('invalid');
    }
}, 300));

});`

?? ?? ??

?????? ??? ??? ??? ??? ??? ?? ???? ?? ??? ??????

?????? ??? ???? ??? ???? ???? ??? ?? ??? ??? ???? ?? ??? ????. ??? ??? ?? ? ???? ????? ?? ? ??? ??????. ? ??? ?? ???? ??? ????? ??? ??? ????? ???? ?? ???? ?????. ??? ??? ???? ???? ???? ?? ?????? ??? ?? ??? ??? ?? ??? ??? ?????.

?? ?? ??? ????? ??? ?? ????

?? ?? ??? ???? ?? ??? ?????.

  • ????? ??? ?? ?? ??
  • ??? ?? ?? ?? ??(????? 24??)
  • ?? ??? ?? ?? ?? ??
  • ?? ?? ???? ? ??
  • ?? ?? ? ?? ???

??? ?? ??? ???? ?? ?? ??? ??????

??? ???? ???? ?? ?? ??? ?????.

  • ???? ??? ???? ?? ???
  • ?? ?? ??? ?? ??? ??
  • ???? ??? ?? ??? ????
  • ???? ?? ?? ??

?? ??? ?? ?? ??? ?? ?? ??? ??????.

?? ??? ??? ?? ????? ????

?? ??? ??? ??? ???? ??? ??? ?? ????? 24?? ?? ?????. ? ??? ???? ?? ?? ??? ????? ???? ??? ??? ? ?? ??? ??? ?????. ??? ????? ? ?? ??? ??? ???? ?? ?? ?? ?? ????? ???? ? ?? ?? ??(4~8??)? ???? ?? ????.

??? ??? ??? ???? ????

??? ??? ??? ??? ???? ? ??? ???? ???? ???. ???? ?? ??? ?? ????? ????? ? ??? ????? ??? API ??? ???? ?? ??? ?? ? ??? ?????. ??, ???? ??? ??? ? ???? ??? ?? ??? ??? ??????.

? ??? ??? ??? ?? JavaScript ????: ?? ?? ? ?? ?? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

?? ????
1783
16
Cakephp ????
1725
56
??? ????
1577
28
PHP ????
1441
31
???
Java vs. JavaScript : ??? ????? Java vs. JavaScript : ??? ????? Jun 20, 2025 am 12:27 AM

Java ? JavaScript? ?? ?? ????? ??? ?? ?? ?? ???? ????? ?????. Java? ??? ? ??? ?????? ??? ???? JavaScript? ?? ? ??? ??? ?????.

JavaScript ?? : ?? ?? JavaScript ?? : ?? ?? Jun 19, 2025 am 12:40 AM

JavaScriptCommentsareEnsentialformaining, ?? ? ???? 1) Single-LinecommentsERUSEDFORQUICKEXPLANATIONS.2) Multi-linecommentSexplaincleClexLogicOrprovidedEdeDDocumentation.3) inlineecommentsClarifySpecificPartSofcode.bestPractic

JS? ??? ???? ???? ??? JS? ??? ???? ???? ??? Jul 01, 2025 am 01:27 AM

JavaScript?? ??? ??? ?? ? ? ?? ??? ???????. 1. ?? ??? ??? ???? ?? ??? ????. ISO ?? ???? ???? ???? ???? ?? ????. 2. ?? ??? ?? ???? ??? ?? ???? ??? ? ??? ? ?? 0?? ????? ?? ??????. 3. ?? ?? ???? ???? ???? ?? ?????? ??? ? ????. 4. Luxon? ?? ???? ???? ?????? ???? ?? ????. ??? ?? ???? ????? ???? ??? ????? ?? ? ????.

JavaScript vs. Java : ?????? ??? ? ?? JavaScript vs. Java : ?????? ??? ? ?? Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforwebDevelopment, whithjavaisbetterforlarge-scalebackendsystemsandandandoidapps.1) javascriptexcelsincreatinginteractivewebexperiences withitsdynatureanddommanipulation.2) javaoffersstrongtypingandobject-Orientededededededededededededededededdec

? ? ???  ??? ?? ???? ??? ?????? ? ? ??? ??? ?? ???? ??? ?????? Jul 02, 2025 am 01:22 AM

TAGGSATTHEBOTTOMOFABLOGPOSTORWEBPAGESERVESPRACTICALPURSEO, USEREXPERIENCE, andDESIGN.1.ITHELPSWITHEOBYOWNSESPORENGENSTOESTOCESKESKERKESKERKERKERDER-RELEVANTTAGSWITHOUTHINGTEMAINCONTENT.2.ITIMPROVESEREXPERKEEPINGTOPONTEFOCUSOFOFOFOCUSOFOFOFOCUCUSONTHEATECLL

JavaScript : ???? ????? ??? ?? ?? JavaScript : ???? ????? ??? ?? ?? Jun 20, 2025 am 12:46 AM

javascriptassevenfundamentalDatatatypes : ??, ???, ??, unull, ??, ? symbol.1) ?? seAdouble-precisionformat, ??? forwidevaluerangesbutbecautiouswithfatingfointarithmetic.2) stringsareimmutable, useefficientconcatenationmethendsf

DOM?? ??? ?? ? ? ??? ?????? DOM?? ??? ?? ? ? ??? ?????? Jul 02, 2025 am 01:19 AM

??? ?? ? ??? DOM?? ??? ??? ? ?????. ??? ?? ????? ?? ??????, ??? ?? ???? ?? ????????. 1. ??? ??? addeventListener? usecapture ?? ??? true? ???? ?????. 2. ??? ??? ?? ???? usecapture? ???? ????? ?????. 3. ??? ??? ??? ??? ???? ? ??? ? ????. 4. ??? ?? ?? ?? ??? ?? ??? ??????? ??? ???? ?????. 5. ??? ?? ?? ?? ??? ?? ???? ?? ???? ? ??? ? ????. ? ? ??? ???? ???? JavaScript? ??? ??? ??? ????? ???? ???? ??? ??????.

Java? JavaScript? ???? ?????? Java? JavaScript? ???? ?????? Jun 17, 2025 am 09:17 AM

Java? JavaScript? ?? ????? ?????. 1. Java? ???? ???? ??? ? ??? ?????? ?????? ? ?? ???? ?????. 2. JavaScript? ?? ? ?? ?? ? ??? ?? ??? ???? ??? ? ?? ? ?? ?????.

See all articles