🚦 Traffic Light Reactions

Free, simple, non-intrusive reaction system for any website. No registration required.

🎨 Customize Your Reactions

Note: Enter colors as HEX without # (e.g., FFFFFF for white, 000000 for black). Emojis can be any single emoji character (some emojis are 2-4 characters).

📋 Embed Code

Copy and paste this code right before the closing </body> tag on your website:


            
That's it! The script will automatically detect your page URL and create the reaction system. No configuration needed beyond this code.
âš¡

Lightning Fast

No dependencies, just 2KB of JavaScript. Loads instantly.

🎯

Non-Intrusive

Minimal design that blends with any website. No popups or distractions.

🔒

Privacy Focused

No cookies, no tracking, no personal data collection.

💰

Completely Free

No limits, no registration, no hidden costs. Forever free.

📖 How It Works

  1. Each page gets its own reactions: The system uses the full URL of your page to store reactions.
  2. Users can change their mind: Clicking a different reaction updates the vote, clicking the same removes it.
  3. Data is stored as simple JSON files: One file per URL, no database needed.
  4. Works in any iframe: The system is embedded as a simple iframe that matches your site's colors.
  5. Keyboard shortcuts: Users can press 1, 2, or 3 to vote quickly.
Advanced: You can also embed manually using iframes:
<iframe src="https://react.com-e.org/oo/?url=YOUR_URL&bgcolor=FFF&color=000&e1=🟢&e2=🟡&e3=🔴"></iframe>
', '' ]; // Use textContent for safe HTML display embedCodeElement.textContent = lines.join('\n'); } // Copy code to clipboard - CORRIGIDO function copyCode() { // Escape emojis for the copy string const escapedEmojis = emojis.map(emoji => emoji.replace(/\\/g, '\\\\') .replace(/"/g, '\\"') .replace(/'/g, "\\'") ); // Build the exact code to copy const code = ` `; navigator.clipboard.writeText(code).then(() => { const btn = document.querySelector('.copy-btn'); const originalText = btn.textContent; btn.textContent = 'Copied!'; btn.classList.add('copied'); setTimeout(() => { btn.textContent = originalText; btn.classList.remove('copied'); }, 2000); }).catch(err => { console.error('Failed to copy: ', err); alert('Failed to copy code. Please select and copy manually.'); }); } // Initialize on load document.addEventListener('DOMContentLoaded', init);