Estoy usando una Promesa en una función para garantizar que el elemento dinámico cargado por la función esté disponible cuando intento arreglar algunos estilos CSS. Pero fixStyling nunca se ejecuta. ¿Qué estoy haciendo mal? ¿Hay una mejor manera de lograr esto?
const fixStyling = function(){ console.log('change style'); let surveyBody = document.querySelector('.survey-page-body'); surveyBody.style.marginTop = "-60px"; } function loadSM() { return new Promise(function(resolve) { (function(t,e,s,n){var o,a,c;t.SMCX=t.SMCX||[],e.getElementById(n)||(o=e.getElementsByTagName(s),a=o[o.length-1],c=e.createElement(s),c.type="text/javascript",c.async=!0,c.id=n,c.src="https://widget.surveymonkey.com/collect/website/js/tRaiETqnLgj758hTBazgd1CDe7_2F_2F4snTovolmrpjpv7u54RGrphPxAqunQp3_2FUPz.js",a.parentNode.insertBefore(c,a))})(window,document,"script","smcx-sdk"); }); } loadSM().then(fixStyling());La razón por la que su código no funcionaba era por la promesa que hizo en loadSM(). Nunca resolvió o rechazó la promesa, por lo que nunca se activó la siguiente.
function fixStyling() { console.log('change style'); let surveyBody = document.querySelector('.survey-page-body'); surveyBody.style.marginTop = "-60px"; } function loadSM() { return Promise.resolve( (function(t, e, s, n) { var o, a, c; t.SMCX = t.SMCX || [], e.getElementById(n) || (o = e.getElementsByTagName(s), a = o[o.length - 1], c = e.createElement(s), c.type = "text/javascript", c.async = !0, c.id = n, c.src = "https://widget.surveymonkey.com/collect/website/js/tRaiETqnLgj758hTBazgd1CDe7_2F_2F4snTovolmrpjpv7u54RGrphPxAqunQp3_2FUPz.js", a.parentNode.insertBefore(c, a)) })(window, document, "script", "smcx-sdk")); } loadSM().then(fixStyling);