0

这是我今天遇到的一个有趣的复杂情况:调用 tbody 标签也会返回 thead。

首先是代码:

function GetAnchors(){
if(!document.getElementById('WebPartWPQ2')){
    return;
};
var item = document.getElementById('WebPartWPQ2').getElementsByTagName('table');
if(!item[0]){
    return;
}
try{
item = item[0].firstChild.firstChild.firstChild.getElementsByTagName('table');
item = item[0].getElementsByTagName('tbody');
item = item[0].getElementsByTagName('tr');
for(i=0; i<item.length; i++){
    if(item[i].getElementsByTagName('td')[1].hasAttribute("height")){
        item[i].getElementsByTagName('td')[1].firstChild.innerHTML = Hijack( item[i].getElementsByTagName('td')[1].firstChild.innerHTML);
    }
}
}catch(err){
    return;
}

}

ne'er 代码行:

item = item[0].getElementsByTagName('tbody');

我已经测试过,所以这有效:

item = item[1].getElementsByTagName('tbody');

因此它返回带有 tbody 的 thead 元素。

对于那些选择它的人,是的,这是 SharePoint。(2013)浏览器是兼容模式 IE9 的 IE10。

我在几页上都有这个,它可以按预期工作,除了一个,html的结构没有显着差异(即表格和单元格结构是相同的,只是其中的文本不同。)

我只是好奇,有人见过这个吗?或者更好的是一些文档?

或者这只是IE?

4

1 回答 1

1

感谢您的关注,但我想通了。

显然,在 SharePoint 2013(也可能是 2010)中,分配给列标题被创建为表格:

<div class="ms-vh-div" name="AssignedTo" SortFields="" ResultType="" FieldType="User" DisplayName="Assigned To" CTXNum="7" FilterDisableMessage="" Filterable="" FilterDisable="" SortDisable="" Sortable="">
<table dir="none" cellSpacing="0" cellPadding="0">
    <tbody>
        <tr>
            <td class="ms-imnImgTD"><img id="imnhdr7" onload="IMNRegisterHeader(event)" border="0" alt="" src="" width="12" height="12" valign="middle" altbase="Presence enabled for this column">
            </td>
            <td class="ms-vh ms-imnTxtTD" noWrap="">
                <a id="diidSort7AssignedTo" class="ms-headerSortTitleLink" onfocus="OnFocusFilter(this)" onclick="javascript:return OnClickFilter(this,event);" href="javascript: " SortingFields=""><img class="ms-hidden" border="0" alt="Use SHIFT+ENTER to open the menu (new window)." src="" width="1" height="1"></a>
                <img border="0" alt="" src="">
                <img border="0" alt="" src="">
            </td>
        </tr>
    </tbody>
</table>

因此,它在头内返回了 tbody。

这听起来很明显,但它嵌套得很深。

再次感谢您的宝贵时间。

于 2013-09-12T15:25:40.570 回答