# convertkit/3.4.3/resources/frontend/js/broadcasts.js

Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages, version 3.4.3. 94 lines.

- Page: https://pluginprobe.com/plugins/convertkit/3.4.3/code/resources/frontend/js/broadcasts.js
- Raw: https://pluginprobe.com/plugins/convertkit/3.4.3/raw/resources/frontend/js/broadcasts.js
- Modified: 2026-02-17T06:19:26+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/convertkit/3.4.3/code/resources/frontend/js/broadcasts.js#L10-L20`.

```javascript
/**
 * Frontend functionality for the Broadcasts block and shortcode.
 *
 * @since   1.9.7.4
 *
 * @author ConvertKit
 */

/**
 * Register events
 */
document.addEventListener('DOMContentLoaded', function () {
	// Listen for click events.
	document.addEventListener('click', function (e) {
		// Check the broadcasts pagination was clicked.
		if (e.target.matches('ul.convertkit-broadcasts-pagination a')) {
			e.preventDefault();

			// Get block container and build object of data-* attributes.
			const blockContainer = e.target.closest(
				'div.convertkit-broadcasts'
			);
			const atts = {
				display_date: blockContainer.dataset.displayDate,
				date_format: blockContainer.dataset.dateFormat,
				display_image: blockContainer.dataset.displayImage,
				display_description: blockContainer.dataset.displayDescription,
				display_read_more: blockContainer.dataset.displayReadMore,
				read_more_label: blockContainer.dataset.readMoreLabel,
				limit: blockContainer.dataset.limit,
				paginate: blockContainer.dataset.paginate,
				paginate_label_prev: blockContainer.dataset.paginateLabelPrev,
				paginate_label_next: blockContainer.dataset.paginateLabelNext,
				link_color: blockContainer.dataset.linkColor,
				page: e.target.dataset.page,
			};

			convertKitBroadcastsRender(blockContainer, atts);
		}
	});
});

/**
 * Sends an AJAX request to request HTML based on the supplied block attributes,
 * when pagination is used on a Broadcast block.
 *
 * @since 	1.9.7.6
 *
 * @param {Object} blockContainer DOM object of the block to refresh the HTML in.
 * @param {Object} atts           Block attributes
 */
function convertKitBroadcastsRender(blockContainer, atts) {
	if (convertkit_broadcasts.debug) {
		console.log('convertKitBroadcastsRender()');
		console.log(atts);
	}

	// Show loading indicator.
	blockContainer.classList.add('convertkit-broadcasts-loading');

	// Build URL with query string parameters.
	const params = new URLSearchParams(atts);
	const url = `${convertkit_broadcasts.ajax_url}?${params.toString()}`;

	// Fetch HTML.
	fetch(url)
		.then(function (response) {
			if (convertkit_broadcasts.debug) {
				console.log(response);
			}

			return response.json();
		})
		.then(function (result) {
			if (convertkit_broadcasts.debug) {
				console.log(result);
			}

			// Remove loading indicator.
			blockContainer.classList.remove('convertkit-broadcasts-loading');

			// Replace block container's HTML with response data.
			blockContainer.innerHTML = result;
		})
		.catch(function (error) {
			if (convertkit.debug) {
				console.error(error);
			}

			// Remove loading indicator.
			blockContainer.classList.remove('convertkit-broadcasts-loading');
		});
}

```
