JQuery неловкое поведение - PullRequest
1 голос
/ 22 января 2010

Я пытаюсь загрузить страницу через ajax, всю страницу, и форматирую свою, как находит в загруженной. Что-то вроде практического упражнения.

Результатом вызова ajax является строка, содержащая html страницы.

Для простоты я сделал пример со строкой, содержащей что-то из самой страницы.

<html>
    <head>
        <title>some test</title>
        <style type="text/css">
            .dv810 { height:810px; }            
        </style>
        <script src="Scripts/Ref/jquery.js"></script>
        <script type="text/javascript">
            var sPage =
            +'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
            + '\n<html xmlns="http://www.w3.org/1999/xhtml">'
            + '\n<head>'
            + '\n    <title>some test</title>'
            + '\n    <style type="text/css">'
            + '\n'
            + '\n    #dvMain { height:830px; }'
            + '\n'
            + '\n    </style>'
            + '\n</head>'
            + '\n<body>'
            + '\n    <div class="container_12 mainContainer">'
            + '\n        <div id="dvMain" class="dv810"></div>'
            + '\n        <br/>'
            + '\n    </div>'
            + '\n</body>'
            + '\n</html>';

            alert('#dvMain: ' + $('#dvMain', $(sPage)).css('height'));

        </script>
    </head>
    <body>
    </body>
</html>

Я получил это неловкое поведение, пытаясь получить свойство css, например, высоту:

  • Firefox: # dvMain.height: 810px
  • Chrome: # dvMain.height:
  • IE8: # dvMain.height: 830px
  • IE8 (с IEtester): # dvMain.height: 830px
  • IE7 (с IEtester): # dvMain.height: 830px
  • IE6 (с IEtester): # dvMain.height: 830px

Как кажется:

  • IE понимает css в строке, черт знает как (хотя это странное поведение, мне это нравится, хотя я думаю, что я бы не стал его много использовать),
  • Firefox ведет себя так, как я думаю, он будет точным, получает класс из стиля на отображаемой странице,
  • Хром к моему удивлению, не понимает или не связывает это, ну, ну, просто ничего не показывай
    Кто-нибудь знает почему?

1 Ответ

0 голосов
/ 22 января 2010

Судя по вашим разным результатам, я думаю, что это вопрос времени обработки. Интересно, будут ли результаты отличаться, изменяя код следующим образом:

var $sPage = $(sPage);
alert('#dvMain: ' + $('#dvMain', $sPage).css('height'));

OR

$(sPage).ready(function(){
  alert('#dvMain: ' + $('#dvMain', $(sPage)).css('height'));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...