Opened 6 months ago

#22470 new enhancement

WP_Scripts: output script element only if src not empty

Reported by: niallkennedy Owned by:
Priority: normal Milestone: Awaiting Review
Component: General Version:
Severity: trivial Keywords: has-patch
Cc:

Description

I was able to make async JavaScript loading work with existing WordPress code by acting on the script_loader_src filter before the <script> element is output, returning an empty string. This results in an empty src attribute, creating technically invalid HTML while not immediately loading the external script. If the WordPress code could check if a non-empty $src string exists before outputting I could avoid the invalid HTML nag. Attached diff only outputs the <script src=""> element if $src is not an empty string.

I'd like to be able to asynchronously load an enqueued script without needing to completely rework WP_Scripts. I'd like to take advantage of common handles indicating a script is set to be loaded, extra data attached to a handle, and other WordPress script expectations while swapping out the <script src=""> echoed markup.

Why async? A script steps out of the way, offering progressive enhancement of the page or loading non-critical features such as stats or socal network sharing buttons. Async loading also helps prevent single points of failure in webpage loading caused by China blocking Facebook or resources hosted at Amazon Web Services going offline for a few hours.

Attachments (1)

class.wp-scripts.diff (728 bytes) - added by niallkennedy 6 months ago.
check if src before outputting new script element with empty src attribute

Download all attachments as: .zip

Change History (1)

check if src before outputting new script element with empty src attribute

Note: See TracTickets for help on using tickets.