Существует ли способ иметь браузеры, игнорируют или переопределяют xml-таблицу-стилей, обрабатывающую инструкции?

Использовал номер типа ввода, чтобы избежать проблемы с конкататом строк. Также проверяется на действительное число после добавления с помощью isNan , иначе он назначит пустое значение в столбце. Вы также можете добавить сообщение об ошибке здесь.

$("#total").click(function() {

  $("tbody tr").each(function() {
    var a = ($(".a", this).val());
    var b = ($(".b", this).val());
    var tt = a + b;
    if (!isNaN(tt))
      $('.a-b', this).text(tt);
    else
      $('.a-b', this).text(''); //your error message if addition is invalid

  })

});
td,
th {
  border: solid 1px #000;
  padding: 5px;
}


a b a+b

5
задан Steven Huwig 25 April 2009 в 00:08
поделиться

5 ответов

EDIT: too bad, though all seemed fine in the preview, the clickable examples seem to mess up things... Maybe the layout is fine in the history.

I've heard, but cannot validate for IE, that both IE and Firefox support the "view-source:" pseudo-protocol. Firefox on Mac indeed understands it, but Safari does not.

The following bookmarklet will not trigger the XSLT transformation specified in the XML. And though Firefox will render this using some colours, it does not execute the default transformation it would normally use for XML without any XSLT (so, the result of view-source does NOT yield a collapsable document tree that Firefox would normally show):

javascript:(function(){
  var u = 'http://www.w3schools.com/xsl/cdcatalog_with_ex1.xml';
  var w = window.open();
  w.document.location.href = 'view-source:' + u;
})()

When fetching the document using Ajax then one is not limited to the alert oneporter used, but can display it in a new window as well. Again: this will not invoke the XSLT transformation that is specified:

javascript:(function(){
  var u = 'http://www.w3schools.com/xsl/cdcatalog_with_ex1.xml';

  var w = window.open(); /* open right away for popup blockers */

  var x = new XMLHttpRequest();
  x.open('GET', u, true); 
  x.onreadystatechange = function(){
    if(x.readyState == 4){
      w.document.open('text/html');
      /* hack to encode HTML entities */
      var d = document.createElement('div'); 
      var t = document.createTextNode(x.responseText); 
      d.appendChild(t);
      w.document.write('<html><body><pre>' 
          + d.innerHTML + '</pre></body></html>');
      w.document.close();
      w.focus();
    }
  };
  x.send(null); 
})()
3
ответ дан 14 December 2019 в 04:47
поделиться

Разве вы не можете просто сделать «Просмотр исходного кода» в обоих браузерах?

2
ответ дан 14 December 2019 в 04:47
поделиться

Пока вам не придется иметь дело с междоменными разрешениями, простое окно запроса / оповещения ajax с источником XML сделал бы трюк. Вам придется добавить немного в объявление xmlHttp, чтобы сделать его совместимым с IE.

<html>
<body>

<script language="JavaScript">
function ajaxFunction()
{

var xmlHttp=new XMLHttpRequest();;

  xmlHttp.onreadystatechange=function()
    {
    if(xmlHttp.readyState==4)
      {
      alert(xmlHttp.responseText);
      }
    }
  xmlHttp.open("GET","YOURFILE.xml",true);
  xmlHttp.send(null);

}
</script>

<a href="#" onclick="JavaScript:ajaxFunction()">Errors</a>

</body>
</html>
2
ответ дан 14 December 2019 в 04:47
поделиться

Вы можете избежать инструкции по обработке, используя промежуточный шаг для предварительной обработки XML перед выводом содержимого в браузер.

Предложение на стороне клиента

  1. Получите соответствующий XML документ с помощью запроса AJAX
  2. Синтаксический анализ XML в DOM (примечание: a DOM не DOM)
  3. Обход DOM и отображение в браузере требуемых данных

Предложение на стороне сервера

Вместо того, чтобы напрямую запрашивать соответствующий XML-документ, вместо этого сделайте запрос к прокси-сценарию, который удалил из содержимого XML все инструкции по обработке или даже все, что вам не нужно.

Вместо этого из:

window.location = 'http://example.com/document.xml';

использовать:

window.location = 'http://example.com/proxy/';


Сценарий на http://example.com/proxy/ будет:

  1. Загрузить документ .xml
  2. Используйте все необходимое для удаления инструкции обработки из содержимого XML
  3. Выведите содержимое XML
1
ответ дан 14 December 2019 в 04:47
поделиться

Насколько я знаю, нет способа сделать то, что вы пытаетесь сделать. Проблема в том, что javascript не может прочитать dom xml из преобразования xml / xsl на стороне клиента. Что касается javascript, он выполняется на обычном html dom.

Однако, в зависимости от типа веб-приложения, может быть некоторая надежда. Вы можете использовать ajax для получения xml текущего URL. Пока нет данных постов или какой-либо другой случайности, этот метод должен работать нормально.

0
ответ дан 14 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: