Question

Une fois qu'une page ait fini de charger, j'utilise JQuery pour changer le href de chaque élément en fonction de certaines de validation personnalisée.C'est très bien, mais mon problème est que l'ouverture de la BCE va réinitialiser le href de l'élément.J'ai une fonction pour changer les liens et voudrais l'appeler, après que la BCE fini de changer le hrefs pour annuler les modifications de la BCE l'a fait.Où serait l'endroit?

Code pour modifier les liens:

    function changeLinks() {
        $(document).ready(function () {
            $("div.ms-vb.itx").each(function () {
                var itemid = $(this).attr("id");
                isValid = aktiverWF[itemid] == "0" || aktiverWF[itemid] == "1";
                if(!isValid)
                {
                    $(this).find("a").removeAttr("onclick");
                    $(this).find("a").unbind("click");
                    $(this).find("a").attr({ href: "javascript:alert('Gewählte Aktion ist nicht durchführbar, da ein Workflow aktiv ist.');" });
                }
            });
        });
    }
Était-ce utile?

La solution

Enfin trouvé un moyen de garder le href tel qu'il était avant l'ouverture de la BCE.Il arrive dans le CreateAjaxMenu(e) fonction.Code pour conserver les modifications (avec des commentaires où des modifications ont été apportées) pour la fonction normale de core.js:

    CreateAjaxMenu = function(e)
    {ULSrLq:;
        if (!IsContextSet())
            return;
        if (e==null)
            e=window.event;
        if (itemTable==null && ecbElm !=null)
            itemTable=ecbElm;
        var srcElement=e.srcElement ? e.srcElement : e.target;
        if (itemTable==null || (itemTable.tagName=="TABLE" && imageCell==null) ||
            (onKeyPress==false && !IsInCtxImg(srcElement) &&
             (srcElement.tagName=="A" ||
              srcElement.parentNode.tagName=="A")))
            return;
        var itab=itemTable;
        var p=itab.parentNode;
        if (p !=null && p.getAttribute('creatingAjax')==1)
            return;
        itab.parentNode.setAttribute('creatingAjax', '1');
        var ctx=currentCtx;
        var fn=function(ctx, tab)
        {ULSrLq:;
            itab.parentNode.replaceChild(tab, itab);
            tab.onclick=itab.onclick;
            tab.onmousehover=OnItem;
            tab.innerHTML = itab.innerHTML; // this line keeps the inner html and thus the old href
            OnItemDeferCall(tab);
            CreateMenuEx(ctx, tab, null);
            tab.parentNode.removeAttribute('creatingAjax');
        };
        FetchEcbInfo(ctx, itemTable.id, itemTable.tagName, fn);
        e.cancelBubble=true;
        return false;
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top