我正在使用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中运行?
答案 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');
}
});
});
(注意,这里仍然存在许多可能的边缘情况,其中包含表单字段和其他元素,其中更改其中的文本可能无法达到预期效果。)