问题描述
我的网站使用 typekit 来抓取在前端工作的自定义字体。
我想把它放在后台的编辑器样式中。但是,我不知道该怎么做 Typekit 使用 js 嵌入代码段而不是 css font-face 嵌入代码段。
最佳解决方案
Tom Nowell 的 TinyMCE plugin solution 非常出色,只需更新 JavaScript 即可使用 Typekit’s new async code 。一旦你使用新的异步嵌入代码,403 问题消失了,你会有 Typekit-enabled TinyMCE 没有大惊小怪!
汤姆已经把所有的代码放在一个博客文章中。他做了所有的沉重的举重,所以去给他一些浏览量和 read the specifics there!
次佳解决方案
我通过添加一个 tinymce 插件,几乎在那里,但是当它尝试从 typekit 检索字体 css 时,我得到 403 禁止:
JS:
(function() {
tinymce.create('tinymce.plugins.typekit', {
init: function(ed, url) {
ed.onPreInit.add(function(ed) {
// Get the DOM document object for the IFRAME
var doc = ed.getDoc();
// Create the script we will add to the header asynchronously
var jscript = "var TypekitConfig = {n
kitId: '*******'n
};n
(function() {n
var tk = document.createElement('script');n
tk.src = '//use.typekit.com/' + TypekitConfig.kitId + '.js';n
tk.type = 'text/javascript';n
tk.async = 'true';n
tk.onload = tk.onreadystatechange = function() {n
var rs = this.readyState;n
if (rs && rs != 'complete' && rs != 'loaded') return;n
try { Typekit.load(TypekitConfig); } catch (e) {}n
};n
var s = document.getElementsByTagName('script')[0];n
s.parentNode.insertBefore(tk, s);n
})();";
// Create a script element and insert the TypeKit code into it
var script = doc.createElement("script");
script.type = "text/javascript";
script.appendChild(doc.createTextNode(jscript));
// Add the script to the header
doc.getElementsByTagName('head')[0].appendChild(script);
});
},
getInfo: function() {
return {
longname: 'TypeKit For TinyMCE',
author: 'Tom J Nowell',
authorurl: 'http://tomjn.com/',
infourl: 'http://twitter.com/tarendai',
version: "1.0"
};
}
});
tinymce.PluginManager.add('typekit', tinymce.plugins.typekit);
})();
PHP
add_filter("mce_external_plugins", "tomjn_mce_external_plugins");
function tomjn_mce_external_plugins($plugin_array){
$plugin_array['typekit'] = get_template_directory_uri().'/typekit.tinymce.js';
return $plugin_array;
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。