在用于 SharePoint 2013 的 CSOM 中使用 JS,我很难从元素中检索文本。这是来自自定义列表的自定义显示表单。有问题的列类型是多行文本框,但由于使用了表单覆盖脚本,因此在显示表单中呈现不同。
Chrome 中的检查元素显示:
<span class="formOverride" id="itemData" data-displayName="RequisitionItems">
<div dir>1||X-HEDC.000.000||GC-M||Critical Item #42||1||10||$10.00||</div>
</span>
每次尝试检索 div 元素中的文本都会导致一个空字符串。
document.getElementById("itemData").innerText;
$("#itemData").text();
$("span#itemData.formOverride").text();
$("span#itemData.formOverride").children().text();
当我显示跨度的 DOM 属性时,innerText 甚至被正确列出,但仍然返回一个空字符串。
我错过了什么……?
提前致谢。
编辑:更多信息...覆盖脚本:
$("span.formOverride").each(function()
{
//get the display name from the custom layout
displayName = $(this).attr("data-displayName");
elem = $(this);
//find the corresponding field from the default form and move it
//into the custom layout
$("table.ms-formtable td").each(function(){
if (this.innerHTML.indexOf('FieldName="'+displayName+'"') != -1){
$(this).contents().appendTo(elem);
}
});
});
因此,最初发布的跨度附加了默认显示表单中的内容。我以前从未遇到过访问 formOverride 信息的问题,所以这很奇怪。
进一步更新:
似乎我无法访问页面上任何元素的文本。这似乎也是 SharePoint 显示表单特有的问题。我从编辑页面完整复制了脚本/html,并将其粘贴到显示页面的相应文件中。在编辑中文本返回正常,但在显示中返回的文本是一个空字符串。