我正在使用PrinceXML制作一些包含一些MathJax标记的 HTML 的 PDF。为了正确呈现数学,处理数学呈现的 javascript 需要在转换为 PDF 之前在页面上运行。
如果我在 PrinceXML 中启用 javascript 并尝试加载 MathJax 库,我会在初始化代码中得到“TypeError:null value is not an object”。跟踪这一点,事实证明以下原因导致错误:
var scripts = (document.documentElement || document).getElementsByTagName("script");
var namePattern = new RegExp("(^|/)"+BASENAME+"\\.js(\\?.*)?$");
for (var i = scripts.length-1; i >= 0; i--) {
if (scripts[i].src.match(namePattern)) { // <--- Error thrown here
STARTUP.script = scripts[i].innerHTML;
if (RegExp.$2) {
<etc...>
在没有 src 属性的脚本元素上引发错误(MathJax 使用脚本元素来存储 LaTeX 代码)。PrinceXML 似乎通过在访问缺少的 src 属性时返回 null 来处理缺少的 src 属性 - 因此会像nullscripts[i].src.match(namePattern)
一样抛出错误。src
但是,当在 Firefox 中完成时(参见小提琴: http: //jsfiddle.net/9ZHMR/),当缺少 src 属性时 element.src 返回空字符串,因此在浏览器中工作时我没有看到这个问题。
哪种行为是“正确的” - 如果该属性不存在,脚本元素的 src 属性应该为 null 还是空字符串?这是现实生活与标准的对比吗?
编辑我主要感兴趣的是这种行为是否由某处的标准指定,所以我知道是否向 Firefox 或 PrinceXML 发布错误报告,或者如果没有标准,向 MathJax 发布错误报告以处理这种情况。