Javascript中的CSS内联(premailer)
CSS Inliner in Javascript (premailer)
我使用CKEDITOR 4,我想过滤HTML内容,以直接在HTML元素中插入样式,如MailChimp及其CSS内联(http://beaker.mailchimp.com/inline-css)。但我必须在Javascript中做,有人有想法吗?
我可以使用jQuery和PrototypeJs。
我不能使用外部API。
我的测试jsFiddle与CKEditor(粘贴):http://jsfiddle.net/EpokK/utW8K/7/
:
<style>
.test {
outline: 1px solid red;
}
</style>
<div class="test">Hello</div>
:
<div style="outline: 1px solid red;">Hello</div>
我找到了这个解决方案:http://tikku.com/scripts/websites/tikku/css_inline_transformer_simplified.js但是这个技巧打开一个选项卡,它在Firefox中默认被阻止…
API解决方案:http://premailer.dialect.ca/
Edit:从未完成的poc中清理我的GH帐户,我删除了下面提到的工具,因此链接导致404。不过,还有一个别人的项目,你可能会感兴趣:http://styliner.slaks.net/
我创建了简单的CSS样式inline - styliner.
它适用于Firefox和Chrome。可能也适用于IE9+和Safari 6,但我还没有测试过。这个版本不需要一个新的窗口-它使用iframe(所以它可能无法在IE上工作-它总是需要一些技巧来使iframe工作:)。
它缺乏对CSS专用性的支持,因此,至少在目前,要使用它,您必须手动对规则进行排序。但也许我很快就会找时间添加这个功能。
我不确定这是否会有帮助,但我发现了这个漂亮的小jQuery/javascript方法,可以嵌入到一个页面- http://devintorr.es/blog/2010/05/26/turn-css-rules-into-inline-style-attributes-using-jquery/
我对它进行了一些编辑,以支持IE,并支持一个带有多个CSS文件的页面,这些文件以正确的顺序应用样式。if(rules[idx].selectorText.indexOf("hover") == -1)
行是必要的,因为jQuery(截至1.8)显然不能再使用:hover
选择器了。
$(document).ready(function ($) {
var rules;
for(var i = document.styleSheets.length - 1; i >= 0; i--){
if(document.styleSheets[i].cssRules)
rules = document.styleSheets[i].cssRules;
else if(document.styleSheets[i].rules)
rules = document.styleSheets[i].rules;
for (var idx = 0, len = rules.length; idx < len; idx++) {
if(rules[idx].selectorText.indexOf("hover") == -1) {
$(rules[idx].selectorText).each(function (i, elem) {
elem.style.cssText = rules[idx].style.cssText + elem.style.cssText;
});
}
}
$('style').remove();
$('script').remove();
$('link').remove();
}
});
页面可以复制/粘贴到邮件正文中。
- 如何编写HTML输入的JS内联
- 跟踪在页面加载时应用内联样式的JavaScript
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- 使用具有内联样式的tidy-html5
- Bootstrap 3 Datepicker v4:dp.show和dp.change事件在Datepicker内联时不
- WinJS内联绑定语法
- 动画显示:无显示:内联
- 动态行的内联计算
- Dojo IE DataGrid内联编辑
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 复选框与文本内联-JS问题
- 在编辑内联模式下禁用Kendo Ui网格按钮
- 内联javascript与"<脚本>"字符串错误地关闭了脚本标记
- 建议将包含不同参数的内联JS转换为外部脚本
- jQuery dosn'内联函数不能按预期工作
- 将形状/掩码动态添加到内联svg中
- Mailchimp内联表单验证不适用于JS加载的HTML
- 菜单将变为内联样式
- Javascript中的CSS内联(premailer)