Jacob D
09/28/2023, 4:12 PMMike Herrera
09/28/2023, 5:53 PMMike Herrera
09/28/2023, 5:54 PMMike Herrera
09/28/2023, 5:57 PMJacob D
09/28/2023, 6:05 PMMike Herrera
09/28/2023, 6:09 PMJacob D
09/28/2023, 6:11 PMMike Herrera
09/28/2023, 6:11 PMJacob D
09/28/2023, 6:11 PMMike Herrera
10/03/2023, 7:41 PMJacob D
10/03/2023, 8:08 PMMike Herrera
10/03/2023, 8:17 PMJacob D
10/03/2023, 8:20 PMMike Herrera
10/03/2023, 8:41 PMMike Herrera
10/05/2023, 3:57 PMJacob D
10/05/2023, 4:36 PMJacob D
10/05/2023, 6:08 PM(function() {
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
if (isSafari) {
var originalRemoveChild = Node.prototype.removeChild;
Node.prototype.removeChild = function(node) {
if (node.tagName === 'SCRIPT' && node.src.indexOf('/api/cms/v2/sites/cms-templates') !== -1) {
console.warn('Prevented removal of script:', node.src);
return node;
}
return originalRemoveChild.call(this, node);
};
}
})();
So, this:Jacob D
10/05/2023, 6:08 PM<% if (SC.Configuration.cms.useCMS) { %>
<script>
require(['jQuery', 'Backbone', 'underscore'], function (jQuery, Backbone, _)
{
jQuery.getScript('/cms/<%= SC.Configuration.cms.adapterVersion %>/cms.js')
.done(function()
{
CMS.trigger('cms:load');
});
});
</script>
<% } %>
Becomes this:
<% if (SC.Configuration.cms.useCMS) { %>
<script>
require(['jQuery', 'Backbone', 'underscore'], function (jQuery, Backbone, _)
{
(function() {
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
if (isSafari) {
var originalRemoveChild = Node.prototype.removeChild;
Node.prototype.removeChild = function(node) {
if (node.tagName === 'SCRIPT' && node.src.indexOf('/api/cms/v2/sites/cms-templates') !== -1) {
console.warn('Prevented removal of script:', node.src);
return node;
}
return originalRemoveChild.call(this, node);
};
}
})();
jQuery.getScript('/cms/<%= SC.Configuration.cms.adapterVersion %>/cms.js')
.done(function()
{
CMS.trigger('cms:load');
});
});
</script>
<% } %>
Jacob D
10/05/2023, 6:13 PM/Modules/suitecommerce/ShoppingApplication@4.1.0/SuiteScript
Mike Herrera
10/05/2023, 6:23 PMJacob D
10/05/2023, 6:25 PMonload
event — which notifies that the templates are loaded and can continue with the CMS load — is fired. Here’s the function in the cms.js script:
n.addTemplateScriptTag = function() {
return new Promise((function(t, n) {
var e = document.createElement("script");
e.type = "text/javascript";
e.src = "/api/cms/v2/sites/cms-templates";
e.async = false;
e.onload = function() {
return t();
};
e.onerror = function() {
return n(new Error("Template script failed to load."));
};
document.head.appendChild(e).parentNode.removeChild(e); // ---->>>>>>. THE SCRIPT TAG SHOULD BE REMOVED ONLOAD OR ONERROR, OTHERWISE THE EVENTS MAY NOT FIRE
}));
}
Mike Herrera
10/09/2023, 8:47 PMMike Herrera
10/19/2023, 10:47 PM