Question

Nous avons une partie Web hébergée par un fournisseur sur notre page de page.Lorsqu'un utilisateur visite une page, ils ne peuvent pas utiliser le bouton arrière, lorsqu'ils l'essaient de rediriger vers la page en cours.

La partie Web est hébergée dans un iframe avec un SRC d'apprivredrect.aspx qui apparaît dans l'historique, donc lorsqu'un utilisateur se poursuit, ils vont réellement apprendre.

Est-ce que quelqu'un sait un moyen autour de cela?Nous accueillons sur SharePoint Online, nous ne pouvons donc pas modifier aucun des fichiers sous-jacents.

Était-ce utile?

La solution

Chargez le JavaScript sur la première page de l'application fournisseur hébergé.

Un événement POPSTATE est envoyé à la fenêtre chaque fois que la saisie d'historique actif change entre deux entrées d'histoire pour le même document.

-> Ajouter un enregistrement d'historique pour la même page (URL de démarrage hébergé fournisseur)

-> Lorsque vous appuyez sur la touche BACK, l'événement de POPSTATE est déclenché et charge la page d'historique correcte

J'utilise le pousstite pour ajouter un élément d'historique sans recharger la page avec la même URL de document.

Bien sûr, les enregistrements d'historique sont identiques à Firefox & Chrome ... sauf c.-à-don d'autres. Ce qui fait des choses que je ne comprends pas du tout? Cela fonctionne si vous remontez une étape de plus. -> J'ai ajouté un chèque de navigateur et retourne une page de plus de l'histoire pour Internet Explorer.

C'est un peu méchant mais ça marche assez bien. Cela fonctionne même si vous parcourez des pages à l'intérieur de l'IFrame, puis revenez.

Je m'attends à ce que cela puisse donner un comportement étrange si vous cliquez sur quelques liens dans l'iframe et finissez sur la première page. Appuyez sur le bouton Retour / Forward dans cette situation déclenchera également l'événement.

window.onpopstate = function (event) {
    if (navigator.sayswho.indexOf("IE") != -1) {
        history.go(-3);
    }
    else {
        history.go(-2);
    }
};

if (document.referrer.indexOf("_layouts/15/appredirect.aspx?") != -1) {
    // Add history so when you click on the back button, the onpopstate event is 
    // triggered since the previous page is on the same document.
    history.pushState({}, "reload", document.location.href);
}

// Just to test if internet explorer is used, change with your own if you want :-)
navigator.sayswho = (function () {
var ua = navigator.userAgent, tem,
M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if (/trident/i.test(M[1])) {
    tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
    return 'IE ' + (tem[1] || '');
}
if (M[1] === 'Chrome') {
    tem = ua.match(/\bOPR\/(\d+)/)
    if (tem != null) return 'Opera ' + tem[1];
}
M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
if ((tem = ua.match(/version\/(\d+)/i)) != null) M.splice(1, 1, tem[1]);
return M.join(' ');
})();

Je l'ai testé et il semble fonctionner décemment.

Cela fonctionne pour IE11, Firefox 31.0 & Chrome 36.

Nécessite API HTML5 Historique, cliquez sur ici pour navigateurs pris en charge.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top