4

根据我在其中指定 HTML 的列,我正在使用 Javascript 在 SharePoint 网站上显示标题。这是 HTML。

<DIV style ='text-align:center; font-weight:bold; font-size: 20px;'>◆&lt;/DIV>

问题是脚本在页面中正确呈现 HTML 时,对 header 没有做同样的事情。它在 90% 的情况下都能正常工作,但不是显示 unicode “◆”,而是呈现“ â ”。

我已经尝试修改 Javascript 以尝试解释 unicode \u25c6,但我失败得很惨。任何人都可以帮助我或提供一些关于为什么会发生这种情况的线索吗?

这是Javascript。

<script type="text/javascript">
// Find all Web Parts in the page
var listWP = [],
    calWP = [],
    divs = document.getElementById("MSO_ContentTable").getElementsByTagName("div");
var count=divs.length;
for (i=0;i<count;i++) {
    try {
        if (divs[i].id.indexOf("WebPartWPQ")==0){
            if (divs[i].innerHTML.indexOf("ViewDefault_CalendarView")>=0) {
                // Calendars
                calWP.push(divs[i].id);
            } else {
                // Other Web Parts
                listWP.push(divs[i].id);
            }
        }
    }
    catch(e){}
}
function TextToHTML(NodeSet, HTMLregexp) {
    var CellContent = "";
    var i=0;
    while (i < NodeSet.length){
        try {
            CellContent = NodeSet[i].innerText || NodeSet[i].textContent;
            if (HTMLregexp.test(CellContent)) {
                NodeSet[i].innerHTML = CellContent;
            }
        }
        catch(err){}
        i=i+1;
    }
}

var regexpA = new RegExp("\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*$");
var regexpTD = new RegExp("^\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*$");
var WP = new Object;

function UpdateWP() {
    if (calWP.length>0){
        for (i=0;i<calWP.length;i++) {
            WP=document.getElementById(calWP[i]);
            if (WP.innerHTML.indexOf("&lt\;")>=0) {
                TextToHTML(WP.getElementsByTagName ("a"),regexpA);
            }
        }
    }
    if (listWP.length>0){
        for (i=0;i<listWP.length;i++) {
            WP=document.getElementById(listWP[i]);
            if (WP.innerHTML.indexOf("&lt\;")>=0) {
                TextToHTML(WP.getElementsByTagName ("td"),regexpTD);
            }
        }
    }
    // Check every 200000000 ms, forever
    setTimeout("UpdateWP()",200000000);
}
UpdateWP();
function HeaderToHTML(){
    var headers=document.getElementById("MSO_ContentTable").getElementsByTagName("li");
    var regexpTR1 = new RegExp("FilterValue1=([\\S\\s]*)'\\)");
    var regexpTR2 = new RegExp("FilterValue2=([\\S\\s]*)'\\)");

    for (i=0;i<headers.length;i++) {
        try{
            var sp=headers[i].getElementsByTagName("span");
            for (j=0;j<sp.length;j++) {
                var test = sp[j].innerText || sp[j].textContent || " ";
                //var test = sp[j].innerText;
                if (test.indexOf("...")>0) {
                    //alert(test);
                    //var value = regexpTR1.exec(headers[i].innerHTML)[1];
                    var inner = headers[i].innerHTML;
                    var value = (inner.indexOf("FilterValue2")>0) ? regexpTR2.exec(headers[i].innerHTML) [1] : regexpTR1.exec(headers[i].innerHTML)[1];
                    //alert(value);
                    //alert(value.replace(/\\u00/g,"\%"));
                    value=value.replace(/\\u00/g,"%");
                    sp[j].innerHTML=unescape(unescape(value)).replace(/8_/," ");
                } 
            }
        }catch(e){}
    }
}
setInterval(function(){HeaderToHTML();},100);
</script>
4

2 回答 2

1

我建议使用 html dex/dec 作为符号。
那是,

&#x25C6;= ◆
&#9670;= ◆

Wikipedia 有一个很好的列表,将它们分类在这里我在这里
找到了你要写的黑色钻石

于 2013-01-04T18:51:51.700 回答
1

我认为一个解决方案可能是在其编码中呈现您的角色,并通过以下方式让浏览器知道它:

<meta http-equiv="Content-Type" content="text/html; charset="...">

例如,如果您使用的是 UTF-8:

<meta http-equiv="Content-Type" content="text/html; charset="UTF-8">
于 2013-01-04T18:48:45.020 回答