|
6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
7 | 7 | <title>Text Hub - Quick & Simple Text Utilities</title> |
8 | 8 | <base href="/TextHub/" /> |
9 | | - <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap" rel="stylesheet"> |
| 9 | + |
| 10 | + <!-- Primary Meta Tags (Fallback/Default) --> |
| 11 | + <meta name="title" content="Text Hub - Quick & Simple Text Utilities" /> |
| 12 | + <meta name="description" content="Transform, analyze, and clean your text with our free online tools. 20+ text utilities including case converters, word counters, and formatting tools. No registration required." /> |
| 13 | + <meta name="keywords" content="text converter, case converter, uppercase, lowercase, title case, camel case, snake case, kebab case, word counter, character counter, text formatter, online text tools, free text utilities" /> |
| 14 | + <meta name="author" content="CodeFryDev" /> |
| 15 | + <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" /> |
| 16 | + <meta name="googlebot" content="index, follow" /> |
| 17 | + <meta name="bingbot" content="index, follow" /> |
| 18 | + <link rel="canonical" href="https://codefrydev.in/TextHub/" /> |
| 19 | + |
| 20 | + <!-- Open Graph / Facebook (Fallback) --> |
| 21 | + <meta property="og:type" content="website" /> |
| 22 | + <meta property="og:url" content="https://codefrydev.in/TextHub/" /> |
| 23 | + <meta property="og:title" content="Text Hub - Quick & Simple Text Utilities" /> |
| 24 | + <meta property="og:description" content="Transform, analyze, and clean your text with our free online tools. 20+ text utilities including case converters, word counters, and formatting tools. No registration required." /> |
| 25 | + <meta property="og:image" content="https://codefrydev.in/TextHub/icon-512.png" /> |
| 26 | + <meta property="og:image:width" content="512" /> |
| 27 | + <meta property="og:image:height" content="512" /> |
| 28 | + <meta property="og:image:alt" content="Text Hub - Text Utilities Logo" /> |
| 29 | + <meta property="og:site_name" content="Text Hub" /> |
| 30 | + <meta property="og:locale" content="en_US" /> |
| 31 | + |
| 32 | + <!-- Twitter (Fallback) --> |
| 33 | + <meta property="twitter:card" content="summary_large_image" /> |
| 34 | + <meta property="twitter:url" content="https://codefrydev.in/TextHub/" /> |
| 35 | + <meta property="twitter:title" content="Text Hub - Quick & Simple Text Utilities" /> |
| 36 | + <meta property="twitter:description" content="Transform, analyze, and clean your text with our free online tools. 20+ text utilities including case converters, word counters, and formatting tools. No registration required." /> |
| 37 | + <meta property="twitter:image" content="https://codefrydev.in/TextHub/icon-512.png" /> |
| 38 | + <meta property="twitter:image:alt" content="Text Hub - Text Utilities Logo" /> |
| 39 | + |
| 40 | + <!-- Additional SEO Meta Tags --> |
| 41 | + <meta name="theme-color" content="#3b82f6" /> |
| 42 | + <meta name="msapplication-TileColor" content="#3b82f6" /> |
| 43 | + <meta name="application-name" content="Text Hub" /> |
| 44 | + <meta name="apple-mobile-web-app-title" content="Text Hub" /> |
| 45 | + <meta name="apple-mobile-web-app-capable" content="yes" /> |
| 46 | + <meta name="apple-mobile-web-app-status-bar-style" content="default" /> |
| 47 | + |
| 48 | + <!-- Language and Region --> |
| 49 | + <meta name="language" content="English" /> |
| 50 | + <meta name="geo.region" content="US" /> |
| 51 | + <meta name="geo.placename" content="United States" /> |
| 52 | + |
| 53 | + <!-- Security --> |
| 54 | + <meta http-equiv="X-Content-Type-Options" content="nosniff" /> |
| 55 | + <meta http-equiv="X-Frame-Options" content="DENY" /> |
| 56 | + <meta http-equiv="X-XSS-Protection" content="1; mode=block" /> |
| 57 | + |
| 58 | + <!-- Resource Hints for Performance --> |
| 59 | + <link rel="preconnect" href="https://fonts.googleapis.com"> |
| 60 | + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| 61 | + <link rel="preconnect" href="https://cdn.tailwindcss.com"> |
| 62 | + <link rel="dns-prefetch" href="https://www.googletagmanager.com"> |
| 63 | + <link rel="dns-prefetch" href="https://www.google-analytics.com"> |
| 64 | + <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap" rel="stylesheet" media="print" onload="this.media='all'"> |
| 65 | + <noscript><link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap" rel="stylesheet"></noscript> |
10 | 66 |
|
11 | | - <script src="https://cdn.tailwindcss.com"></script> |
| 67 | + <script src="https://cdn.tailwindcss.com" defer></script> |
12 | 68 |
|
13 | 69 | <script type="text/tailwindcss-config"> |
14 | 70 | tailwind.config = { |
|
184 | 240 | // Add new listener |
185 | 241 | document.addEventListener('click', handleClickOutside); |
186 | 242 | }; |
| 243 | + |
| 244 | + // Check if running on localhost |
| 245 | + window.isLocalhost = () => { |
| 246 | + const hostname = window.location.hostname; |
| 247 | + return hostname === 'localhost' || |
| 248 | + hostname === '127.0.0.1' || |
| 249 | + hostname === '::1' || |
| 250 | + hostname.startsWith('192.168.') || |
| 251 | + hostname.startsWith('10.') || |
| 252 | + hostname.endsWith('.local'); |
| 253 | + }; |
| 254 | + |
| 255 | + // Service Worker registration function |
| 256 | + window.registerServiceWorker = async () => { |
| 257 | + if ('serviceWorker' in navigator) { |
| 258 | + try { |
| 259 | + const registration = await navigator.serviceWorker.register('service-worker.js'); |
| 260 | + console.log('Service Worker registered successfully:', registration.scope); |
| 261 | + return registration; |
| 262 | + } catch (error) { |
| 263 | + console.log('Service Worker registration failed:', error); |
| 264 | + throw error; |
| 265 | + } |
| 266 | + } else { |
| 267 | + console.log('Service Worker not supported'); |
| 268 | + } |
| 269 | + }; |
187 | 270 | </script> |
188 | | -<!-- <script>navigator.serviceWorker.register('service-worker.js');</script>--> |
189 | 271 | </body> |
190 | 272 |
|
191 | 273 | </html> |
0 commit comments