使用托管元数据字段过滤列表在iFrame中不起作用

时间:2015-01-12 06:48:19

标签: listview iframe filtering sharepoint-2013

我正在发布网站上工作。根据需要,页面库的视图需要显示在页面上。该视图包含托管元数据字段。

如果直接访问该页面,则可以使用任何字段过滤该视图。 但是如果通过其他站点甚至同一站点上的iFrame访问页面,使用托管元数据字段过滤视图,我无法从服务器获得任何响应。 过滤适用于除托管元数据之外的所有类型的站点列。

我试图找出问题: 尝试使用字段进行过滤时,将动态生成基于开箱即用模板的下拉菜单。下拉菜单中的每个项目都有一个onmenuclick事件。 对于简单类型字段,事件为:

onmenuclick="javascript:HandleFilter(event, 'url')" 

但是对于托管的元数据,事件是:

onmenuclick="javascript:window.parent.HandleFilter(window.parent.event, 'url')"

我不允许修改开箱即用模板。 所以请帮助,有任何解决方案或修补程序?任何想法都表示赞赏。 谢谢。

1 个答案:

答案 0 :(得分:0)

                function fixFilters() {
                    $("[id^=FilterIframe]").on("load", function () {                
                        $(".ms-vh-div[fieldtype='TaxonomyFieldType']").on("mouseover",".ms-MenuUIULItem",function() {
                            var old = $(this).attr("onMenuClick");
                            if (typeof old != "undefined") {
                                var newString = old.replace(/window\.parent\./g,"");
                                $(this).attr("onMenuClick",newString);
                            }
                        }); 
                    });         
                };
                _spBodyOnLoadFunctionNames.push("fixFilters");

上述工作对我来说具有合理的可靠性。