JQuery .load () не работает при рендеринге из файла XSL - PullRequest
0 голосов
/ 26 октября 2011

У меня есть файл HTML:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>orientation test</title>
    <script language="javascript" type="text/javascript" src="jquery-1.6.4.min.js"></script>
    <script language="javascript" type="text/javascript" src="code.js"></script>
    <script language="javascript" type="text/javascript">
        alert('HI');
        go();
    </script>
</head>
<body>
    <div id="oriented">HI</div>
</body>
</html>

Файл javascript "code.js":

function go() {
    try {
        alert(1);
        $(document).ready(function () {
            $("#oriented").load("data.html #orient", function (response, status, xhr) {
                alert(2);
                if (status == "error") {
                    var msg = "Sorry but there was an error: ";
                    alert(msg);
                }
                else {
                    try {
                        alert($("#oriented").html());
                    }
                    catch (err) { alert(err); }
                }
            });
        });
    } catch (err) { alert('err: ' + err); }
}

var a = setInterval("go();", 3000);
alert('BYE');

XSL-файл "main.xsl":

<?xml version="1.0" encoding="iso-8859-1"?>

<xsl:stylesheet
    version="1.0"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:msws="http://tempuri.org/"
    >

  <xsl:template match="/">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>orientation test</title>
        <script language="javascript" type="text/javascript" src="jquery-1.6.4.min.js">
          <xsl:text> </xsl:text>
        </script>
        <script language="javascript" type="text/javascript" src="code.js">
          <xsl:text> </xsl:text>
        </script>
        <script language="javascript" type="text/javascript">
          alert('HI');
          go();
        </script>
      </head>
      <body>
        <div id="oriented">HI</div>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

XML-файл для запуска XSL-файла:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="feed.xsl"?>
<Results xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <Status>OK</Status>
  <Result>
    <FeedDTO>
    </FeedDTO>
  </Result>
</Results>

И файл для чтения в «data.html»:

<html>
<head>
    <title>test</title>
</head>
<body>
    <div id="orient">OFF</div>
</body>
</html>

И обязательный файл jquery min версии 1.6.4 .js, который я не буду здесь показывать.

Я обнаружил, что при запуске файла main.html в Firefox 7.0.1 функция alert(2); в функции go () никогда не срабатывает. Раньше я думал, что это происходит только при визуализации main.xml, но теперь я вижу, что это не всегда так.

Мне нужен этот JQuery для загрузки содержимого файла data.html и помещения его в содержимое div на текущей странице, независимо от того, отображается ли текущая страница из XSL / XML или нет.

Как мне убедиться, что $ .load () работает правильно? При попытке ... поймать ошибки не отображаются.

Кроме того, мне нужна эта работа с локальными файлами, и в конечном итоге этот код будет выполняться как локальные файлы на iPhone.

1 Ответ

0 голосов
/ 27 октября 2011

Ну, похоже, это не скоро будет решено. Если есть ответ, я его не нашел.

Я, однако, нашел работу вокруг ...

Я поместил iframe (в стиле полностью скрытого) и создал интервал для обновления атрибута 'src' iframe со случайным значением до единственного аргумента URL-адреса src. Как то так:

<script type="text/javascript">
function reloadFrame()
{
 var t = Math.random();
 $("#loader").attr("src","updatepage.html?t="+t);
}

var a = setInterval("reloadFrame();", 1000);
</script>

<iframe id="loader" src="" style="position: absolute; visibility: none;" />

Приведенный выше код перезагружает iframe раз в секунду. URL-адрес фактически отличается из-за случайного значения параметра 't', в результате чего браузер выполняет фактический запрос к серверу / локальному файлу, а не игнорирует его на основании совпадения с URL-адресом предыдущей загрузки iframe src. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...