jQuery html() method ignores script tags from HTML and not executed.

This is a limitation of jQuery .html() method. When we pass a string HTML block to inject into DOM using .html() method, it injects the HTML block but the script tags inside the HTML block do not execute.

We were inserting a piece of HTML block that had an analytics script using jQuery html() method. The HTML block was injected but the analytics script didn’t work. Here is how we solved it:

We had to use $.parseHTML of jQuery to fix the issue. Following the code segment.

 $(".container").html($.parseHTML(HTMLblockWithScriptTag, document, true));
// $.parseHTML method's third parameters does the trick

Reference:
jQuery – script tags in the HTML are parsed out by jQuery and not executedhttps://api.jquery.com/jQuery.parseHTML/

Share