私はPrinceXMLを使用して、いくつかのMathJaxマークアップを含む HTML の PDF を作成しています。数学を適切にレンダリングするには、PDF に変換する前に、数学レンダリングを処理する JavaScript をページで実行する必要があります。
PrinceXML で JavaScript を有効にして MathJax ライブラリを読み込もうとすると、初期化コードで「TypeError: null 値はオブジェクトではありません」というメッセージが表示されます。これを追跡すると、次のことがエラーの原因であることがわかります。
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 属性のない script 要素でスローされます (MathJax は script 要素を使用して LaTeX コードを格納します)。PrinceXML は、不足している src 属性にアクセスするときに null を返すことで、不足している src 属性を処理しているように見えます。したがって、nullの場合scripts[i].src.match(namePattern)
はエラーがスローされsrc
ます。ただし、Firefox (fiddle: http://jsfiddle.net/9ZHMR/を参照) で行うと、 element.src は src 属性が欠落している場合に空の文字列を返すため、ブラウザーで作業しているときにこの問題は発生しませんでした。
スクリプト要素の src 属性を null にするか、属性が存在しない場合は空の文字列にするかのどちらが「正しい」動作ですか? これは実際の生活と標準のケースですか?
編集主に、この動作がどこかの標準で指定されているかどうかに関心があるため、バグレポートをFirefoxまたはPrinceXMLに投稿するか、標準がない場合はMathJaxにバグレポートを投稿してこのケースを処理するかを知っています.