krux / postscribe

Asynchronously write javascript, even with document.write.
MIT License
986 stars 156 forks source link

When attempting to add a script with a text/plain MIME, Postscribe stops processing other tokens. #513

Open brenthosie opened 1 year ago

brenthosie commented 1 year ago

One of our customers asked us to track down why our software stops executing adding code to the page when they try to follow this recommendation on how to handle Google Analytics V4.

In their example, they show adding the script to the page with a MIME of text/plain, and later switching it to text/javascript for code execution.

I tracked this down to an issue within postscribe where a script begins the this._onScriptStart call, but never invokes the _onScriptDone handler. This makes sense from the perspective that this file is downloaded as plain text. However, something is getting messed up with the internals of postscribe and no other processing seems to be occurring. The done callback lifecycle is also never executed when making a call to the postscribe object.

I've created a minimal example to show the problem. If you change the MIME of script 1 to be text/javascript, then script 2 begins to execute.