Не удается использовать document.write в таблице стилей XSLT (Firefox) - PullRequest
0 голосов
/ 24 мая 2011

Я создал таблицу стилей XSL со встроенным JavaScript. Он вызывает функции, которые в свою очередь вызывают document.write () для вывода результатов этих функций на страницу.

<xsl:foreach...>
<div class="directionBlock">
<script type="text/javascript">writeDirection('<xsl:value-of select="Direction"/>');</script>
</div>
</xsl:foreach...>

К сожалению, в Firefox document.write () не поддерживается. Что делать?

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Зачем вам нужен XSLT и Javascript для вывода HTML? Если ваша цель состоит в выводе чего-либо в div, содержащем элемент script, то подумайте, чтобы сделать это только с XSLT. Если вам действительно нужно использовать Javascript для создания содержимого, подумайте об использовании таких методов, как createElement и appendChild вместо document.write. Насколько общий ответ может помочь, если вам нужна конкретная помощь, нам нужно увидеть детали вашего кода, такого как writeDirection функция и аргумент, который вы ей передаете.

Чтобы дать вам общее представление об образце кода, если функция writeDirection должна добавить содержимое в div, тогда поместите идентификатор в div, например, <div id="db1" class="directionBlock">...</div>, затем передайте его функции writeDirection, например, <script type="text/javascript">writeDirection('<xsl:value-of select="Direction"/>', document.getElementById('db1'));</script>, тогда в этой функции просто выполните

function writeDirection(dir, elementToWriteTo) {
  // instead of document.write(stuff) use
  var span = document.createElement('span');
  span.innerHTML = stuff;
  elementToWriteTo.appendChild(span);
}
0 голосов
/ 25 мая 2011

Я реализовал решение, чтобы вызвать функцию и передать номер строки:

<xsl:foreach...>
  ...
  <div class="directionBlock">
    <script>myJsFunction('<xsl:value-of select="Direction"/>', <xsl:value-of select="position()"/>);</script>
  </div>
  ...
</xsl:foreach...>

Это, в свою очередь, использовало JQuery для доступа к рассматриваемому элементу, используя nth-child (position), чтобы получить строку, найти селектор и использовать .html () для вставки кода в этот элемент.

Спасибо за вашу помощь!

...