我想使用Wpf webBrowser控件来渲染数学方程式。 我已经下载了MathJax,并将其包含在我的Visual Studio项目中。
我尝试加载其中一个MathJax示例。这是我正在使用的HTML代码:
<!DOCTYPE html>
<html>
<head>
<title>MathJax MathML Test Page</title>
<!-- Copyright (c) 2010-2012 Design Science, Inc. -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<script type="text/javascript" src="MathJax-Reduced/unpacked/MathJax.js?config=TeX-AMS-MML_HTMLorMML-full"></script>
</head>
<body>
<p>
When
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mi>a</mi><mo>≠</mo><mn>0</mn>
</math>,
there are two solutions to
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mi>a</mi><msup><mi>x</mi><mn>2</mn></msup>
<mo>+</mo> <mi>b</mi><mi>x</mi>
<mo>+</mo> <mi>c</mi> <mo>=</mo> <mn>0</mn>
</math>
and they are
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mi>x</mi> <mo>=</mo>
<mrow>
<mfrac>
<mrow>
<mo>−</mo>
<mi>b</mi>
<mo>±</mo>
<msqrt>
<msup><mi>b</mi><mn>2</mn></msup>
<mo>−</mo>
<mn>4</mn><mi>a</mi><mi>c</mi>
</msqrt>
</mrow>
<mrow> <mn>2</mn><mi>a</mi> </mrow>
</mfrac>
</mrow>
</math>
</p>
</body>
</html>
使用以下代码,一切正常:
string curDir = Directory.GetCurrentDirectory();
this.webBrowser1.Navigate(new Uri(String.Format("file:///{0}/test-1.html", curDir)));
但如果我尝试这段代码:
string s = File.ReadAllText(Directory.GetCurrentDirectory() + "\\test-1.html");
this.webBrowser1.NavigateToString(s);
我收到脚本错误:
An error has occurred in the script on this page.
Line: 1
Char: 1
Error: Syntax Error
Code: 0
URL: about:MathJax-Reduced/unpacked/MathJax.js?config=TeX-AMS-MML_HTMLorMML-full
怎么了?使用类似于最后一个代码的东西真的很有帮助,所以我可以避免保存文件只是为了加载它......
答案 0 :(得分:0)
请注意,错误中的网址为about:MathJax-Reduced/unpacked...
,这是about
网址,而不是您在第一种情况下的file://
网址。我怀疑这是问题的原因。这表明NavigateToString
函数使用about:blank
或类似的URL作为页面的基本URL,因此MathJax正在走错路径。请注意,从文件中读取实际页面位置并将其作为字符串加载时,会丢失实际页面位置。这意味着您可能必须从绝对URL而不是相对URL加载MathJax(即,包括file://
和MathJax-Reduced
目录的路径。)