我被要求构建一些可以生成HTML电子邮件的东西.
我最后一次创建其中一个是大约三年前,所以我想知道是否仍然需要注意关于使用表,嵌套表,必须使用内联样式表等的警告,或者是否(希望)电子邮件客户端有抓住了一些浏览器,并允许使用外部样式表,div等.
我确实有一个很好的谷歌信息,但我发现的大多数文章都是几年,所以想知道目前的状态是什么.
任何人都可以向我提供最新的最佳实践吗?
非常感谢!
首先:如果这是重复的帖子,请道歉.当我试图同时发布/注册时,事情变得有点混乱.
我开始研究从一个简单的WPF窗口运行UCI国际象棋引擎,让国际象棋引擎在与该界面不同的线程上运行,并创建了一个合理可维护的基于文本的前端.
我现在变得更加雄心勃勃了,并希望开始构建一个带有国际象棋棋子的GUI,它将为玩家提供棋子引擎的动作,并代表引擎在棋盘上的动作.我的目标是可拖动的碎片,而不是点击方块.
我目前的尝试涉及在<canvas>元素上使用可拖动的用户控件.我真的很想知道其他更有经验的WPF/.NET程序员会如何处理这个问题,因为我并不完全相信我是在正确的轨道上.
例如:使用统一网格并在子元素之间拖动数据会更好吗?我应该创建一个抽象的"片段"类,如棋子可以衍生出来吗?那种事.
有什么想法吗?这不是一个家庭作业或任何事情,只是我在业余时间作为练习在我身边徘徊.
遇到了一个问题,我们的某些用户从我们的网站的Facebook浏览器中坐着一辆越野车。
问题是:Facebook App用户在访问我们在FB上共享的页面时,正在FB浏览器上获得“您的离线页面”。
该错误似乎是由于旧版本的Google Workbox(3.6.1)使用Chrome 75自动返回了FB应用程序中的“您处于离线状态”页面。
对Workbox的引用是在服务工作者中进行的,因此当我们更新Workbox版本(解决了该问题)时,某些用户仍旧缓存了旧版本。
如果用户清除其FB应用程序缓存或重新安装FB,那么一切正常,他们可以看到我们的内容。但是我们想尝试强迫软件更新而不要求他们这样做。
要从FB浏览器中清除旧的Service Worker,我们尝试了以下操作:
<script>
"use strict";
console.log("Service Worker Registration");
function isFacebookApp() {
var ua = navigator.userAgent || navigator.vendor || window.opera;
return (ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1);
}
if ("serviceWorker" in navigator) {
if(isFacebookApp() == true) {
console.log("Service Worker Registration: using v2, via Facebook App");
navigator.serviceWorker.getRegistrations().then(function(registrations) {
for(let registration of registrations) {
console.log("Service Worker Registration: "+registration);
registration.unregister();
}
});
} else {
console.log("Service Worker Registration: using v2, not via Facebook App");
window.addEventListener("load", …Run Code Online (Sandbox Code Playgroud)