- Offizieller Beitrag
mir scheint es, dass Firefox ab 148 manche E-Mails nicht richtig anzeigt. Nur mit einem STRG+F5 geht es dann wieder. Hat jemand dasselbe Problem?
mir scheint es, dass Firefox ab 148 manche E-Mails nicht richtig anzeigt. Nur mit einem STRG+F5 geht es dann wieder. Hat jemand dasselbe Problem?
Ja, habe ich behoben, das Rendering habe ich über iframe.srcdoc gelöst
function initEMailTextArea(code)
{
var iframe = EBID('textArea'), lastSize = 0, hasRendered = false;
if(!iframe) return;
var resolveDoc = function()
{
return iframe.contentDocument || (iframe.contentWindow && iframe.contentWindow.document) || null;
};
var renderIframeHTML = function()
{
if(!iframe) return null;
// Firefox-safe: srcdoc bevorzugen (kein about:blank load-race)
if('srcdoc' in iframe)
{
try { iframe.srcdoc = code; } catch(e) {}
return resolveDoc();
}
// Fallback: document.write
var d = resolveDoc();
if(!d) return null;
try {
d.open();
d.write(code);
d.close();
} catch(e) {}
return d;
};
var resCB = function()
{
var d = resolveDoc();
if(!d) { window.setTimeout(resCB, 500); return; }
try
{
var h = 0;
var el = d.getElementById('__bmMailText');
if(el)
h = el.clientHeight || 0;
else if(d.documentElement)
h = d.documentElement.scrollHeight || 0;
var iframeHeight = iframe.offsetHeight || iframe.clientHeight || 0;
if(h > lastSize + 60 && h > iframeHeight + 20)
{
iframe.style.height = (h > 140 ? (h + 60) : 200) + 'px';
lastSize = h;
}
}
catch(e) {}
window.setTimeout(resCB, 500);
};
var cb = function()
{
if(!iframe) return;
// nur einmal rendern, danach kein reliance auf load-event
if(!hasRendered)
{
var rendered = renderIframeHTML();
if(!rendered) { window.setTimeout(cb, 50); return; }
hasRendered = true;
try { removeEvent(iframe, 'load', cb); } catch(e) {}
}
var d = resolveDoc();
if(!d) { window.setTimeout(cb, 50); return; }
var mm = function(event)
{
if(typeof(parent._hSepDragging) == 'undefined') return;
if(!parent._hSepDragging && !parent._vSepDragging) return;
if(parent.document.createEvent)
{
var ev = parent.document.createEvent('MouseEvents');
ev.initMouseEvent('mousemove', true, true, window, 0,
event.screenX, event.screenY,
event.screenX - parent.diffScreenClientX,
event.screenY - parent.diffScreenClientX,
false, false, false, false, 0, null);
parent.document.dispatchEvent(ev);
}
};
var mc = function(event)
{
if(parent.document.createEvent)
{
var ev = parent.document.createEvent('MouseEvents');
ev.initMouseEvent('mouseup', true, true, window, 0,
event.screenX, event.screenY,
event.screenX - parent.diffScreenClientX,
event.screenY - parent.diffScreenClientX,
false, false, false, false, 0, null);
parent.document.dispatchEvent(ev);
}
};
addEvent(d, 'mousemove', mm);
addEvent(d, 'click', mc);
resCB();
};
// alte WebKit/Opera-Logik behalten, aber immer cb einmal triggern
if(/WebKit/i.test(navigator.userAgent) || /Opera/i.test(navigator.userAgent))
{
var _isLoaded = false;
setInterval(function()
{
if(/loaded|complete/.test(document.readyState))
{
if(!_isLoaded) cb();
_isLoaded = true;
}
else
_isLoaded = false;
}, 50);
}
else
addEvent(iframe, 'load', cb);
window.setTimeout(cb, 0);
}
Alles anzeigen
Ja, hatte ich auch beobachtet. Habe als Workaround eine empty.html geladen statt about:blank und eine Kleinigkeit im JS angepasst, ohne es genauer analysiert zu haben.
Ja, habe ich behoben, das Rendering habe ich über iframe.srcdoc gelöst
Danke
. KI generiert oder selbst geschrieben?
Danke
. KI generiert oder selbst geschrieben?
KI - ich arbeite momentan an einer neuen Seite da konnte ich das direkt auch mit meinem Testsystem reproduzieren. Läuft produktiv seit einer Woche, die Kunden haben sich auch alle positiv zurückgemeldet, bestes Zeichen^^
Sorry wenn ich das jetzt so raushaue!
wo muss das eingetragen werden bzw welche datei muss dafür verändert werden!
habe nämlich den selben fehler das emails nicht angezeigt werden erst nach dem der frame aktualisiert wurde
Ja, habe ich behoben, das Rendering habe ich über iframe.srcdoc gelöst
Code Alles anzeigenfunction initEMailTextArea(code) { var iframe = EBID('textArea'), lastSize = 0, hasRendered = false; if(!iframe) return; var resolveDoc = function() { return iframe.contentDocument || (iframe.contentWindow && iframe.contentWindow.document) || null; }; var renderIframeHTML = function() { if(!iframe) return null; // Firefox-safe: srcdoc bevorzugen (kein about:blank load-race) if('srcdoc' in iframe) { try { iframe.srcdoc = code; } catch(e) {} return resolveDoc(); } // Fallback: document.write var d = resolveDoc(); if(!d) return null; try { d.open(); d.write(code); d.close(); } catch(e) {} return d; }; var resCB = function() { var d = resolveDoc(); if(!d) { window.setTimeout(resCB, 500); return; } try { var h = 0; var el = d.getElementById('__bmMailText'); if(el) h = el.clientHeight || 0; else if(d.documentElement) h = d.documentElement.scrollHeight || 0; var iframeHeight = iframe.offsetHeight || iframe.clientHeight || 0; if(h > lastSize + 60 && h > iframeHeight + 20) { iframe.style.height = (h > 140 ? (h + 60) : 200) + 'px'; lastSize = h; } } catch(e) {} window.setTimeout(resCB, 500); }; var cb = function() { if(!iframe) return; // nur einmal rendern, danach kein reliance auf load-event if(!hasRendered) { var rendered = renderIframeHTML(); if(!rendered) { window.setTimeout(cb, 50); return; } hasRendered = true; try { removeEvent(iframe, 'load', cb); } catch(e) {} } var d = resolveDoc(); if(!d) { window.setTimeout(cb, 50); return; } var mm = function(event) { if(typeof(parent._hSepDragging) == 'undefined') return; if(!parent._hSepDragging && !parent._vSepDragging) return; if(parent.document.createEvent) { var ev = parent.document.createEvent('MouseEvents'); ev.initMouseEvent('mousemove', true, true, window, 0, event.screenX, event.screenY, event.screenX - parent.diffScreenClientX, event.screenY - parent.diffScreenClientX, false, false, false, false, 0, null); parent.document.dispatchEvent(ev); } }; var mc = function(event) { if(parent.document.createEvent) { var ev = parent.document.createEvent('MouseEvents'); ev.initMouseEvent('mouseup', true, true, window, 0, event.screenX, event.screenY, event.screenX - parent.diffScreenClientX, event.screenY - parent.diffScreenClientX, false, false, false, false, 0, null); parent.document.dispatchEvent(ev); } }; addEvent(d, 'mousemove', mm); addEvent(d, 'click', mc); resCB(); }; // alte WebKit/Opera-Logik behalten, aber immer cb einmal triggern if(/WebKit/i.test(navigator.userAgent) || /Opera/i.test(navigator.userAgent)) { var _isLoaded = false; setInterval(function() { if(/loaded|complete/.test(document.readyState)) { if(!_isLoaded) cb(); _isLoaded = true; } else _isLoaded = false; }, 50); } else addEvent(iframe, 'load', cb); window.setTimeout(cb, 0); }
Sorry wenn ich das jetzt so raushaue!
wo muss das eingetragen werden bzw welche datei muss dafür verändert werden!
habe nämlich den selben fehler das emails nicht angezeigt werden erst nach dem der frame aktualisiert wurde
prüfe mal deine templates/modern/templatename/js/email.js
1000 dank, mit dem Code aus Post1 funktioniert es wieder!
Top Danke
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!