Skip to content

Instantly share code, notes, and snippets.

@robisatthefunction
Last active August 25, 2025 22:18
Show Gist options
  • Select an option

  • Save robisatthefunction/4937a7963d48c5549edc7c49eb522ede to your computer and use it in GitHub Desktop.

Select an option

Save robisatthefunction/4937a7963d48c5549edc7c49eb522ede to your computer and use it in GitHub Desktop.
// Inject Optimizely script immediately
(function() {
'use strict';
console.log('πŸš€ Optimizely injection script starting...');
console.log('πŸ“ Current URL:', window.location.href);
console.log('πŸ“Š Document ready state:', document.readyState);
// Function to inject the Optimizely script
function injectOptimizelyScript() {
console.log('πŸ”§ Starting Optimizely script injection process...');
// Replace this script with your script
const optimizelyUrl = 'https://cdn.optimizely.com/js/29420580055.js';
// Check if Optimizely script is already loaded
const existingScript = document.querySelector(`script[src="${optimizelyUrl}"]`);
if (existingScript) {
console.warn('⚠️ Optimizely script already exists on this page - skipping injection');
console.log('πŸ” Existing script element:', existingScript);
return;
}
// Check if Optimizely object exists globally
if (window.optimizely) {
console.warn('⚠️ Optimizely object already exists globally - skipping injection');
console.log('πŸ” Existing optimizely object:', window.optimizely);
return;
}
console.log('βœ… No existing Optimizely found - proceeding with injection');
// Create the script element
console.log('πŸ“ Creating script element...');
var script = document.createElement('script');
script.src = optimizelyUrl;
script.type = 'text/javascript';
script.async = false; // Optimizely should load synchronously for proper A/B testing
console.log('πŸ“„ Script element configured:');
console.log(' - Source:', script.src);
console.log(' - Type:', script.type);
console.log(' - Async:', script.async);
// Add load event listener
script.onload = function() {
console.log('πŸŽ‰ Optimizely script loaded successfully!');
console.log('πŸ” Optimizely object now available:', !!window.optimizely);
if (window.optimizely) {
console.log('πŸ“Š Optimizely object details:', window.optimizely);
}
};
// Add error event listener
script.onerror = function() {
console.error('❌ Failed to load Optimizely script');
console.log('πŸ”— Failed URL:', optimizelyUrl);
};
// Find injection target (head is preferred for Optimizely)
var target = document.head || document.getElementsByTagName('head')[0] || document.body;
console.log('🎯 Injection target found:', target ? target.tagName : 'NONE');
if (target) {
console.log('πŸ’‰ Injecting script into', target.tagName, 'element...');
// For Optimizely, inject at the beginning of head for earliest execution
if (target === document.head || target.tagName === 'HEAD') {
if (target.firstChild) {
target.insertBefore(script, target.firstChild);
console.log('πŸ“Œ Script injected at beginning of HEAD');
} else {
target.appendChild(script);
console.log('πŸ“Œ Script appended to empty HEAD');
}
} else {
target.appendChild(script);
console.log('πŸ“Œ Script appended to', target.tagName);
}
console.log('πŸŽ‰ Optimizely script element successfully injected!');
// Monitor for script loading
setTimeout(function() {
console.log('πŸ” Post-injection check (100ms):');
console.log(' - Script in DOM:', !!document.querySelector(`script[src="${optimizelyUrl}"]`));
console.log(' - Optimizely object exists:', !!window.optimizely);
}, 100);
setTimeout(function() {
console.log('πŸ” Extended check (1000ms):');
console.log(' - Script loaded:', script.readyState !== 'loading');
console.log(' - Optimizely object exists:', !!window.optimizely);
if (window.optimizely) {
console.log(' - Optimizely ready:', typeof window.optimizely !== 'undefined');
}
}, 1000);
} else {
console.error('❌ Could not find head or body element to inject script');
console.log('πŸ—οΈ Document structure:', {
head: !!document.head,
body: !!document.body,
documentElement: !!document.documentElement,
headElements: document.getElementsByTagName('head').length,
bodyElements: document.getElementsByTagName('body').length
});
}
}
// Run injection immediately
console.log('⚑ Running injection immediately...');
injectOptimizelyScript();
console.log('🏁 Injection script completed');
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment