Замена тела Jquery, когда вспышка возится - PullRequest
1 голос
/ 20 декабря 2010

Здравствуйте, stackoverflow друзья,

Я пытаюсь заменить некоторое содержимое на веб-сайте, используя следующий код:

var newbody = $('body').html().replace(oldvalue, newvalue);
$('body').html(newbody);

Проблема в том, что у меня есть флэш-память, встроенная вDOM и всякий раз, когда я пытаюсь сделать замену, браузер падает.Кто-то должен подумать, что метод prepend или append в нужном месте должен быть лучшим способом для достижения этой цели, но элементы, которые я пытаюсь найти и заменить, являются html-комментариями, а методы append prepend, похоже, не работают с такими узлами.поэтому они должны рассматриваться как буквальные строки.

Есть ли какой-нибудь свет на это?

Заранее спасибо!

1 Ответ

0 голосов
/ 17 марта 2011

Вы используете замену на теле. Вы можете случайно уничтожить некоторые элементы вашего документа или атрибуты элемента. Например:

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
<script>
jQuery(document).ready(function(){
    var newbody = jQuery("body").html().replace("div", "input");
    jQuery("body").html(newbody);
});
</script>
</head>
<body>
<div>div is some content</div>
</body>
</html>

Гораздо лучший подход - добавить класс к тексту с желанием изменить и использовать jQuery для изменения текста во всех элементах этого класса.

Что касается обхода комментариев, вам нужно использовать такие типы DOM, как:

    $(function() {
        $("body").contents().filter(function(){
            return this.nodeType == 8;
        }).each(function(i, e){
            alert(e.nodeValue);
        });
    });
...