我正在将Web应用程序安装在公司防火墙后面的服务器中,因此我需要打一些补丁才能用自托管的CDN替换CDN中的JavaScript库。
当我将MathJax路径从//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML
替换为//a.mysite.com/lib/MathJax/MathJax.js?config=TeX-AMS_HTML
时,问题就来了。在浏览器中观察请求,我看到它正确地加载了MathJax.js,但没有以文本形式呈现公式。
这是完整的涉及功能:
$update.click(function () {
var text = $textarea.val();
if (text) {
$preview.addClass('dmmd-preview-stale');
$.post(preview_url, {
preview: text,
csrfmiddlewaretoken: $.cookie('csrftoken')
}, function (result) {
$content.html(result);
$preview.addClass('dmmd-preview-has-content').removeClass('dmmd-preview-stale');
var $jax = $content.find('.require-mathjax-support');
if ($jax.length) {
if (!('MathJax' in window)) {
$.ajax({
type: 'GET',
url: $jax.attr('data-config'),
dataType: 'script',
cache: true,
success: function () {
$.ajax({
type: 'GET',
url: '//a.mysite.com/lib/MathJax/MathJax.js?config=TeX-AMS_HTML',
dataType: 'script',
cache: true,
success: function () {
MathJax.Hub.Queue(function () {
$content.find('.tex-image').hide();
$content.find('.tex-text').show();
});
}
});
}
});
} else {
MathJax.Hub.Queue(['Typeset', MathJax.Hub, $content[0]], function () {
$content.find('.tex-image').hide();
$content.find('.tex-text').show();
});
}
}
});
} else {
$content.empty();
$preview.removeClass('dmmd-preview-has-content').removeClass('dmmd-preview-stale');
}
}).click();
当前,我为同一服务器和webapp配置了两个主机名,比如:
a.mysite.com
b.mysite.com
奇怪的是,使用上述功能,通过 B 加载网站可以正常工作。但是,当我将函数中的url
值更改为 B 时, A 有效,而 B 无效。我不太了解JavaScript,所以不知道是否缺少明显的东西。