Ошибка сценария wpf webBrowser NavigateToString

Я хочу использовать элемент управления 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

Что не так? Было бы очень полезно использовать что-то похожее на последний код, поэтому я могу не сохранять файл только для его загрузки...


person Davide_sd    schedule 28.04.2013    source источник


Ответы (1)


Обратите внимание, что URL-адрес в ошибке — about:MathJax-Reduced/unpacked..., то есть URL-адрес about, а не URL-адрес file://, который был у вас в первом случае. Подозреваю, что это причина проблемы. Это говорит о том, что функция NavigateToString использует about:blank или аналогичный URL-адрес в качестве базового URL-адреса страницы, поэтому MathJax получает неверный путь к себе. Обратите внимание, что вы теряете фактическое местоположение страницы при чтении ее из файла и загрузке в виде строки. Это означает, что вам, возможно, придется загружать MathJax с абсолютного URL-адреса, а не с относительного (т. е. включать file:// и путь к каталогу MathJax-Reduced).

person Davide Cervone    schedule 30.04.2013
comment
Я попытался добавить абсолютный путь: file://C$/Users/Davide/Documents/Visual%20Studio%202010/Projects/Test-MathJax-1/Test-MathJax-1/bin/Debug/MathJax-Reduced/unpacked/MathJax.js?config=TeX-AMS-MML_HTMLorMML-full \nОн не отображает математику. - person Davide_sd; 03.05.2013
comment
Я пытался использовать: file://127.0.0.1/C$/Users/Davide/Documents/Visual%20Studio%202010/Projects/Test-MathJax-1/Test-MathJax-1/bin/Debug/MathJax-Reduced/unpacked/MathJax.js?config=TeX-AMS-MML_‌​HTMLorMML-full это дало мне ошибку: An error has occured in the script on this page. Line: 181 Char: 7 Error: Unable to get value of the property 'img': objects is null or undefined Code: 0 URL: file://127.0.0.1/C$/Users/Davide/Documents/Visual%20Studio%202010/Projects/Test-MathJax-1/Test-MathJax-1/bin/Debug/MathJax-Reduced/unpacked/jax/output/HTML-CSS/imageFonts.js - person Davide_sd; 03.05.2013
comment
MathJax-Reduced предполагает, что вы удалили часть дистрибутива MathJax, возможно, графические шрифты (папка font/HTML-CSS/TeX/png), так как они составляют большую часть пространства, занимаемого MathJax. Обратите внимание, что сбой происходит при попытке загрузить пакет графических шрифтов, который предполагает, что они были удалены. Если вы не устанавливаете графические шрифты, вам необходимо сообщить об этом MathJax, установив imageFont:null в разделе "HTML-CSS" вашей конфигурации. - person Davide Cervone; 03.05.2013
comment
Я включил папку шрифтов, проблема в использовании абсолютного пути. Посмотрите на следующее сообщение, которое я увидел при загрузке страницы: File failed to load: file://127.0.0.1/C$/Users/Davide/Documents/Visual%20Studio%202010/Projects/Test-MathJax-1/Test-MathJax-1/bin/Debug/MathJax-Reduced/unpacked/../fonts/HTML-CSS/TeX/png/unpacked/imagedata.js - person Davide_sd; 06.05.2013
comment
Часть пути MathJax-Reduced/unpacked/../fonts/HTML-CSS/TeX‌​/png/unpacked/imagedata.js верна. Начальная часть правильная? Если вас беспокоит ../, то удалите каталог unpacked, так как шрифты находятся в основном каталоге. Я немного удивлен, что вы вообще получаете графические шрифты. Вы используете Firefox? Firefox с URL-адресами file:// — единственный оставшийся случай, когда это происходит. Простое решение — вместо этого установить шрифты MathJax OTF в папку системных шрифтов. - person Davide Cervone; 07.05.2013