Javascript 脚本编辑器仅在编辑页面模式下工作

Javascript 脚本编辑器仅在编辑页面模式下工作,javascript,sharepoint,sharepoint-2013,Javascript,Sharepoint,Sharepoint 2013,在编辑页面模式下,脚本可以工作,但当我停止编辑页面时,脚本将不会运行 <script language='javascript' type='text/javascript'> function FilterOMenu(c, a) { //Be carefull with overriding SharePoint core functions, for now this will work (September 2016 CU). Ensure you test this

在编辑页面模式下,脚本可以工作,但当我停止编辑页面时,脚本将不会运行

<script language='javascript' type='text/javascript'>
function FilterOMenu(c, a) {
    //Be carefull with overriding SharePoint core functions, for now this will work (September 2016 CU). Ensure you test this every time after installing a SharePoint update.
    //SharePoint default (I placed this above, cause it returns.)
    if (a == null)
        return;
    var b = a.tagName == "DIV" ? a.parentNode : a;
    //End SharePoint default

    //Custom implementation to sort the filter
    var fieldInternalName = a.getAttribute("name");

    //some sort functions
    var ascComparer = function(a,b){return a.text<b.text ? -1:a.text>b.text ? 1 : 0;};
    var descComparer = function(a,b){return a.text>b.text ? -1:a.text<b.text ? 1 : 0;};
    var ascDateComparer = function(a,b){d1 = Date.parse(a.text);d2 = Date.parse(b.text);return d1<d2 ? -1:d1>d2 ? 1 : 0;};
    var descDateComparer = function(a,b){d1 = Date.parse(a.text);d2 = Date.parse(b.text);return d1>d2 ? -1:d1<d2 ? 1 : 0;};

    var myCustomSort = {};
    //Add the field internal name and give a comparer as value to sort
    //As example the title column as your case is
    myCustomSort["Kuup_x00e4_ev"] = descDateComparer;
    //myCustomSort["Aktiivne"] = ascComparer;
    //console.log(myCustomSort["Date"]);

    if(typeof c != "undefined" && c != null && typeof myCustomSort[fieldInternalName] != "undefined"){//check if you implemented a custom sort for the current internalname
        //select all items that are checkable (the options)
        var allSelectableItems = c.querySelectorAll('[checked]');
        if(allSelectableItems.length > 0){
            var elementInnerhtmls = [];
            var htmlToReplace = "";
            var htmlToAppend = "";
            for(var i = 0;i<allSelectableItems.length;i++)
            {
                elementInnerhtmls.push({text: allSelectableItems[i].getAttribute("text"),html:allSelectableItems[i].outerHTML});
                htmlToReplace += allSelectableItems[i].outerHTML; 
            }
            elementInnerhtmls = elementInnerhtmls.sort(myCustomSort[fieldInternalName]);
            for(var i = 0;i<elementInnerhtmls.length;i++)
            {
                htmlToAppend += elementInnerhtmls[i].html;
            }
            //replace the original html with the sorted html
            c.innerHTML = c.innerHTML.replace(htmlToReplace,htmlToAppend);
        }
    }
    //SharePoint default
    OMenu(c, b, null, null, -1)
    //End SharePoint default
} </script>

功能过滤器菜单(c,a){
//请小心覆盖SharePoint核心功能,目前这将起作用(2016年9月CU)。请确保每次安装SharePoint更新后都对其进行测试。
//SharePoint默认设置(我将其放在上面,因为它会返回。)
如果(a==null)
返回;
var b=a.tagName==“DIV”?a.parentNode:a;
//结束SharePoint默认设置
//用于对筛选器排序的自定义实现
var fieldInternalName=a.getAttribute(“名称”);
//一些排序函数
var ascomparer=函数(a,b){返回a.textb.text?1:0;};
var descComparer=函数(a,b){返回a.text>b.text?-1:a.textd2?-1:d10){
var elementInnerhtmls=[];
var htmlToReplace=“”;
var htmlToAppend=“”;

对于(var i=0;i而言,此问题通常发生在以下情况下:

  • 脚本标记没有
    type=“text/javascript”
  • 未正确引用
    “SP.js”
    “SP.Runtime”
    文件
  • 您没有调用
    executeOrderLayUntillScriptLoaded
    函数
  • 最小下载策略功能被激活
  • 代码写得不正确

有关更多详细信息,请选中此问题通常发生在以下情况下:

  • 脚本标记没有
    type=“text/javascript”
  • 未正确引用
    “SP.js”
    “SP.Runtime”
    文件
  • 您没有调用
    executeOrderLayUntillScriptLoaded
    函数
  • 最小下载策略功能被激活
  • 代码写得不正确

有关更多详细信息,请检查

是否尝试在脚本编辑器Web部件中添加简单的JavaScript警报,如警报('test'),是否有效?@SylvainB Simple alert有效。我在函数启动前和函数启动后添加了一个警报。函数内的警报不会弹出。omenu代码是什么样子的…您调用的函数名与函数定义不匹配如果您尝试在脚本编辑器网页中添加简单的JavaScript警报t、 像alert('test'),它是否有效?@SylvainB Simple alert有效。我在函数启动前和函数启动后添加了一个警报。函数内部的警报不会弹出。omenu代码是什么样子的?您调用的函数名与定义的函数名不匹配