динамически вставлять JavaScript в тег <head> - PullRequest
0 голосов
/ 01 мая 2010

Я использую CEWP (веб-часть) и помещаю туда этот код. Но этот код не идет внутрь тега <head>. Мне нужно вставить этот код в тег <head>,

<script src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript">
$("*").each(function () { if ($(this).children().length == 0) { $(this).text($(this).text().replace('Respuesta','Responder')); } });
</script>

Как я могу это сделать? Как этот код будет работать в веб-части CEWP?

1 Ответ

3 голосов
/ 01 мая 2010

Во-первых, вы можете поместить код в <head>, если настроите его запуск во время готовности документа.

Однако, это все равно не сработает. Вы перебираете все теги. Включая <html>, который будет первым, выбранным $('*').

Таким образом, вы читаете весь текст внутри элемента <html> (т. Е. Весь текст документа), делаете замену строки на нем, а затем записываете его обратно в html text(). Замена всего предыдущего текста и содержимого элемента <html> одной простой текстовой строкой. И тем самым уничтожая все остальные элементы на странице. К сожалению.

Что вы хотите сделать, так это найти каждый текстовый узел и заменить его отдельной строкой:

$(document).ready(function() {
    $('*').each(function() {
        for (var i= this.childNodes.length; i-->0;) {
            var child= this.childNodes[i];
            if (child.nodeType===3) // TEXT_NODE
                child.data= child.data.replace(/Respuesta/g, 'Responder');
        }
    });
});

(Обратите внимание, что здесь все еще есть множество возможных крайних случаев с полями формы и другими элементами, в которых изменение текста внутри них может не сработать, как вы ожидаете.)

...