动态插入javascript到标记

时间:2010-04-30 20:38:09

标签: javascript jquery sharepoint cewp

我正在使用CEWP(webpart)并将此代码放在那里。但是此代码不在<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 webpart中运行?

1 个答案:

答案 0 :(得分:3)

首先,如果您将代码设置为在文档就绪时间运行,则可以将代码放在<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');
        }
    });
});

(注意,这里仍然存在许多可能的边缘情况,其中包含表单字段和其他元素,其中更改其中的文本可能无法达到预期效果。)