PageSourceSearch

https://comfilife.com/wp-content/plugins/tiktok-for-woocommerce/admin/js/ajaxSnippet.js

js comfilife.com collected 2026-10-05 02:00:22 UTC 8,245 bytes, 229 lines download raw bytes

1jQuery(
2		function( $ ) {
3			$( document.body ).on(
4				'added_to_cart',
5				function( e, fragments, cart_hash, thisbutton ) {
6					// var pixel_code = window.tt4b_script_vars.pixel_code;
7					// var currency = window.tt4b_script_vars.currency;
8					// var product_id = thisbutton.data('product_id');
9					// var product_name = thisbutton.data('product_name');
10					// var price = thisbutton.data('price');
11					//
12					// ttq.instance(pixel_code).track(
13					// 	'AddToCart',
14					// 	{
15					// 		'content_id': product_id,
16					// 		'content_name': product_name,
17					// 		'content_type': 'product',
18					// 		'price': price,
19					// 		'value': price,
20					// 		'quantity': 1,
21					// 		'currency': currency
22					// 	}
23					// );
24				}
25				);
26
27
28	// add library to help parse phone numbers
29	let script = document.createElement('script');
30	script.src = 'https://unpkg.com/[email protected]/bundle/libphonenumber-min.js';
31	document.head.appendChild(script);
32
33	// add library to generate uuid4 for event api
34	let uuidScript = document.createElement('script');
35	uuidScript.src = 'https://cdnjs.cloudflare.com/ajax/libs/uuid/8.1.0/uuidv4.min.js';
36	document.head.appendChild(uuidScript);
37
38	// advanced matching - will send hashed advanced_matching fields if true, otherwise will exit if advanced_matching value is false or null
39	function getEmailAndPhone(inputElement, pixelCode, source) {
40		if (window.tt4b_script_vars.advanced_matching !== '1') {
41			return;
42		}
43		let result = {
44			email: "",
45			phone_number: ""
46		};
47		if (!inputElement) {
48			return result
49		}
50		let form = inputElement.closest('form') || inputElement.querySelector('form');
51		if ((!form || form.length === 0) && source !== 'ninjaforms') {
52			return;
53		} else if ((!form || form.length === 0) && source === 'ninjaforms') {
54			form = inputElement.first('form')[0];
55		}
56		let inputElements = form.querySelectorAll('input');
57		for (let input of inputElements) {
58			if (input.type === 'email') {
59				result.email = input.value;
60			} else if (input.type === 'tel') {
61				try {
62					let phone_number = input.value;
63					result.phone_number = libphonenumber.parsePhoneNumber(phone_number, window.tt4b_script_vars.country).number
64				} catch (error) {
65					console.warn("Error occurred while parsing phone number: ", error);
66				}
67			}
68		}
69		ttq.instance(pixelCode).identify(result);
70	}
71
72	// Fires a Contact event if AM data present in form, otherwise fires a SubmitForm vent
73	function firePixelBasedOnFormIntent(inputElement, pixelCode, source) {
74		let form = inputElement.closest('form') || inputElement.querySelector('form');
75		if ((!form || form.length === 0) && source !== 'ninjaforms') {
76			return;
77		} else if ((!form || form.length === 0) && source === 'ninjaforms') {
78			form = inputElement.first('form')[0];
79		}
80		let inputElements = form.querySelectorAll('input');
81		let hasAMData = false;
82		for (let input of inputElements) {
83			if (input.type === 'email' || input.type === 'tel') {
84				hasAMData = true;
85				break;
86			}
87		}
88		let eventType = hasAMData ? 'Contact' : 'SubmitForm'
89		let event_id = ""
90		try {
91			event_id = uuidv4()
92		} catch (error) {
93			console.warn("Error occurred while generating uuidv4: ", error);
94		}
95		ttq.instance(pixelCode).track(eventType, {
96			'source' : source,
97			'wp_plugin' : source,
98			"event_id" : event_id
99		})
100	}
101
102	// Some forms will trigger the submit event, even if the form submission is unsuccessful
103	// In this case we want to make sure the form submission is successful by checking for the success message
104	// once the message is visible, we will fire the pixel event
105	function createObserver(source) {
106		return new MutationObserver(function(mutations) {
107			mutations.forEach(function(mutation) {
108				if (window.getComputedStyle(mutation.target).display !== 'none') {
109					getEmailAndPhone(mutation.target, window.tt4b_script_vars.pixel_code);
110					firePixelBasedOnFormIntent(mutation.target, window.tt4b_script_vars.pixel_code, source)
111				}
112			});
113		});
114	}
115
116	// fallback case
117	document.addEventListener('submit', function(event) {
118		var pixel_code = window.tt4b_script_vars.pixel_code;
119		getEmailAndPhone(event.target, pixel_code);
120		firePixelBasedOnFormIntent(event.target, pixel_code, "fallback")
121	});
122
123	// ButtonClick Lead Gen Event
124	$('button, :submit').on( 'click', function(event) {
125		var pixel_code = window.tt4b_script_vars.pixel_code;
126		// AM based on form inputs when submit clicked
127		getEmailAndPhone(event.target, pixel_code);
128		let event_id = ""
129		try {
130			event_id = uuidv4()
131		} catch (error) {
132			console.warn("Error occurred while generating uuidv4: ", error);
133		}
134		ttq.instance(pixel_code).track('ClickButton', {
135			'content': 'SubmitClick',
136			"event_id": event_id
137		});
138	});
139
140	// Contact Lead Gen Event: Contact Form 7
141	// https://wordpress.org/plugins/contact-form-7/
142	document.addEventListener('wpcf7mailsent', function(event) {
143		var pixel_code = window.tt4b_script_vars.pixel_code;
144		getEmailAndPhone(event.target, pixel_code);
145		firePixelBasedOnFormIntent(event.target, pixel_code, "contactform7")
146	 }, false);
147
148	// Contact Lead Gen Event: MC4WP: Mailchimp for Wordpress
149	// https://wordpress.org/plugins/mailchimp-for-wp/
150	var mailchimp_forms = document.querySelectorAll('.mc4wp-form');
151	mailchimp_forms.forEach(function(form) {
152		var pixel_code = window.tt4b_script_vars.pixel_code;
153		form.addEventListener('submit', function(event) {
154			getEmailAndPhone(event.target, pixel_code);
155			firePixelBasedOnFormIntent(event.target, pixel_code, "mailchimp4wordpress")
156		});
157	});
158
159	// Contact Lead Gen Event: Jetpack + Mailchimp
160	// https://jetpack.com/support/jetpack-blocks/mailchimp-block/
161	var jetpackMailchimpNodes = document.querySelectorAll('.wp-block-jetpack-mailchimp_success');
162	if (jetpackMailchimpNodes.length > 0) {
163		var jetpackMailchimpObserver = createObserver('jetpackmailchimp');
164		jetpackMailchimpNodes.forEach(function(targetNode) {
165			jetpackMailchimpObserver.observe(targetNode, { attributes: true, childList: true, subtree: true });
166		});
167	}
168
169	// Contact Lead Get Event: MailPoet
170	// https://wordpress.org/plugins/mailpoet/
171	$('input.mailpoet_submit').on('click', function() {
172		var pixel_code = window.tt4b_script_vars.pixel_code;
173		getEmailAndPhone(event.target, pixel_code);
174		firePixelBasedOnFormIntent(event.target, pixel_code, "mailpoet")
175	});
176
177	// Contact Lead Gen Event: Spectra
178	// https://wordpress.org/plugins/ultimate-addons-for-gutenberg/
179	var spectraForms = document.querySelectorAll('.uagb-forms-main-form');
180	spectraForms.forEach(function(form) {
181		var pixel_code = window.tt4b_script_vars.pixel_code;
182		form.addEventListener('submit', function(event) {
183			getEmailAndPhone(event.target, pixel_code);
184			firePixelBasedOnFormIntent(event.target, pixel_code, "spectra")
185		});
186	});
187
188	// Submit Form Lead Gen Event: WPForms
189	// https://wordpress.org/plugins/wpforms-lite/
190	$('form.wpforms-form').on('wpformsAjaxSubmitSuccess', (event) => {
191		var pixel_code = window.tt4b_script_vars.pixel_code;
192		getEmailAndPhone(event.target, pixel_code);
193		firePixelBasedOnFormIntent(event.target, pixel_code, "wpforms")
194	})
195
196
197	// Submit Form Lead Gen Events: JetPack
198	// https://wordpress.org/plugins/jetpack/
199	if (document.querySelector('[class*=jetpack-contact-form]')) {
200		document.addEventListener('submit', (event) => {
201			var pixel_code = window.tt4b_script_vars.pixel_code;
202			getEmailAndPhone(event.target, pixel_code);
203			firePixelBasedOnFormIntent(event.target, pixel_code, "jetpack")
204		});
205	}
206
207	// Submit Form Lead Gen Events: Ninja Forms
208	// https://wordpress.org/plugins/ninja-forms/
209	$(document).on('nfFormSubmitResponse', (event) => {
210		event.preventDefault();
211		var pixel_code = window.tt4b_script_vars.pixel_code;
212		getEmailAndPhone($('.nf-form-layout'), pixel_code, "ninjaforms");
213		firePixelBasedOnFormIntent($('.nf-form-layout'), pixel_code, "ninjaforms")
214	});
215
216	$(document).on('nfFormReady', (event) => {
217		event.preventDefault();
218		$('button, :submit, input[type="submit"]').on( 'click', function(event) {
219			var pixel_code = window.tt4b_script_vars.pixel_code;
220			// AM based on form inputs when submit clicked
221			getEmailAndPhone(event.target, pixel_code);
222			ttq.instance(pixel_code).track('ClickButton', {
223				'content': 'SubmitClick'
224			});
225		});
226	})
227
228});
229

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.