Ho una schermata di accordo utente. Fondamentalmente una visualizzazione HTML con un iframe e un pulsante. Voglio abilitare il pulsante quando l'utente scorre verso il basso. Funziona su tutti i browser desktop, IE, Chrome, Safari ma non funziona su Safari mobile o Chrome su dispositivi iOS. Sembra che l'evento 'scrolling' non venga applicato correttamente. Vedete qualcosa qui che farebbe funzionare?La direttiva AngularJS per la visualizzazione di un contratto utente, il pulsante di attivazione rilevamento, non funziona su Safari mobile
(function() {
angular.module('myapp').directive('textAgreement', function($timeout, ActivityLogService) {
return {
restrict: 'A',
scope: {
onscrollCallback: '&onscrollCallback',
onloadCallback: '&onloadCallback'
},
compile: function(tElement) {
return function(scope, element) {
/** Called on load **/
var appliedCheck = function(event) {
try {
if (typeof scope.onloadCallback !== undefined) {
if (typeof scope.onloadCallback == 'function') {
scope.onloadCallback();
scope.$apply();
}
}
var elm = element[0].contentWindow.document.body;
var newwin = element[0].contentWindow;
if (elm) {
$(newwin).scroll(function() {
var checkBottom = (elm.scrollTop+600) >= elm.scrollHeight;
console.log('###$$$ +++++ ' + elm.scrollTop + ' ' + elm.scrollHeight);
if (checkBottom) {
scope.bottom = true;
if (typeof scope.onscrollCallback !== undefined) {
if (typeof scope.onscrollCallback == 'function') {
scope.onscrollCallback();
scope.$apply();
}
}
}
});
}
} catch(e) {
console.log(e);
}
};
element.bind('load', appliedCheck);
};
}
};
});
})();
<iframe text-agreement onload-callback="disableLoading()" onscroll-callback="enableAgree()" id="agreeFrame" src="{{ ::trustSrcAgreementUri }}" style="border:0" width="100%" height="100%"></iframe>
E per risolvere il problema, è possibile provare con eventi "touchmove" anziché scroll. –