wpf webBrowser NavigateToString脚本错误

时间:2013-04-28 20:29:30

标签: wpf browser mathjax

我想使用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>&#x2260;</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>&#x2212;</mo>
        <mi>b</mi>
        <mo>&#x00B1;</mo>
        <msqrt>
          <msup><mi>b</mi><mn>2</mn></msup>
          <mo>&#x2212;</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

怎么了?使用类似于最后一个代码的东西真的很有帮助,所以我可以避免保存文件只是为了加载它......

1 个答案:

答案 0 :(得分:0)

请注意,错误中的网址为about:MathJax-Reduced/unpacked...,这是about网址,而不是您在第一种情况下的file://网址。我怀疑这是问题的原因。这表明NavigateToString函数使用about:blank或类似的URL作为页面的基本URL,因此MathJax正在走错路径。请注意,从文件中读取实际页面位置并将其作为字符串加载时,会丢失实际页面位置。这意味着您可能必须从绝对URL而不是相对URL加载MathJax(即,包括file://MathJax-Reduced目录的路径。)