Pergunta

Eu tenho um arquivo html (app) que lê outro arquivo html (dados) via jQuery.ajax(). Em seguida, ele encontra tags específicas no arquivo html de dados e usa o texto nas tags para exibir dicas de ferramentas.

Aqui está o arquivo HTML do aplicativo:

<!DOCTYPE html
 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>Test</title>

<style type="text/css">
<!--/* <![CDATA[ */
body {
  font-family : sans-serif;
  font-size : medium;
  margin-bottom : 5em;
}
a, a:hover, a:visited {
  text-decoration : none;
  color : #2222aa;
}
a:hover {
  background-color : #eeeeee;
}
#stat_preview {
  position : absolute;
  background : #ccc;
  border : thin solid #aaa;
  padding : 3px;
  font-family : monospace;
  height : 2.5em;
}
/* ]]> */-->
</style>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
//<![CDATA[

$(document).ready(function() {
  $("#stat_preview").hide();

  $(".cfg_lnk").mouseover(function () {
    lnk = $(this);
    $.ajax({
      url: lnk.attr("href"),
      success: function (data) {
        console.log (data);
        $("#stat_preview").html("A heading<br>")
                          .append($(".tool_tip_text", $(data)).slice(0,3).text())
                          .css('left', (lnk.offset().left + lnk.width() + 30))
                          .css('top', (lnk.offset().top + (lnk.height()/2)))
                          .show();
      }
    });
  }).mouseout (function () {
    $("#stat_preview").hide();
  });
});

//]]>
</script>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>Test</h1>
<ul>
  <li><a class="cfg_lnk" href="data.html">Sample data</a></li>
</ul>
<div id="stat_preview"></div>
</body>
</html>

E aqui está os dados html

<!DOCTYPE html
 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>Test</h1>
  <table>
    <tr>
      <td class="tool_tip_text"> Some random value 1</td>
      <td class="tool_tip_text"> Some random value 2</td>
      <td class="tool_tip_text"> Some random value 3</td>
      <td class="tool_tip_text"> Some random value 4</td>
      <td class="tool_tip_text"> Some random value 5</td>
    </tr>
    <tr>
      <td class="tool_top_text"> Some random value 11</td>
      <td class="tool_top_text"> Some random value 21</td>
      <td class="tool_top_text"> Some random value 31</td>
      <td class="tool_top_text"> Some random value 41</td>
      <td class="tool_top_text"> Some random value 51</td>
    </tr>
  </table>
</body>
</html>

Isso está funcionando como pretendido no Firefox, mas não no Chrome (Chromium 5.0.356.0).

o console.log (data) Exibe a string vazia no console JavaScript do Chromium. Firebug no Firefox, no entanto, exibe todos os dados HTML.

Estou esquecendo de algo? Algum indicador?

Foi útil?

Solução

Não tenho certeza da resposta, mas algumas avenidas de investigação que eu conseguia pensar:

  1. Os dados são um objeto (em vez de uma string?) Talvez o console do Chromium não saiba como exibi -lo. Você pode tentar um método de saída alternativo para testá -lo ou ver se o fornecimento da configuração 'Datatype' faz alguma diferença.
  2. O retorno de chamada de sucesso está sendo chamado em cromo? Pode ser um recurso de segurança de bug ou um navegador (como proteção contra scripts cruzados ou desativado o JavaScript) que o está bloqueando.
  3. Experimente uma versão estática do HTML/CSS Seu código deve produzir e verifique se ele é exibido corretamente nos dois navegadores.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top