2010-04-30 42 views
0

我正在使用CEWP(webpart)并将此代码放在那里。但是这个代码不在<head>标签内。我需要在<head>标记中插入此代码,动态插入javascript到<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中工作?

回答

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'); 
     } 
    }); 
}); 

(注意:还有一堆可能的边缘案件在这里与表单字段和其他元素,其中改变他们里面的文字可能不会达到你期望的效果。)

+0

你可以把那个javascript放在你想要的地方,但是不要忘记_spBodyOnLoadFunctionNames.push(“myFunction”) – 2010-05-01 07:46:07