我在Safari浏览器上运行的SAP UI5应用程序存在问题。
我要求onClick
或点按任何输入字段,字段中的内容必须获得焦点或突出显示,如屏幕抓取1所示。
不幸的是,它有时会起作用。如果我在iPad上使用水龙头它不起作用。我是否必须添加任何新事件或阻止任何默认行为?
我试过这种方式:
this.$().click(function() {
var uAgent = navigator.userAgent ;
var input = this.$().find('INPUT');
if( uAgent.match(/iPhone/) || uAgent.match(/iPad/) ) {
input.get(0).setSelectionRange(0,9999)
}
else
{
input.select();
}
this.fireClick({});
}.bind(this));
this.$().mouseup(function(e){
e.preventDefault();
}.bind(this));
}
问题是上述解决方案仅在某些情况下有效,有时光标在末尾。但是,我想重点关注或突出显示点击,并使Safari和Chrome中的行为保持一致。你能帮忙解决一下如何防止screenclipping2中显示的行为吗?
Chrome上的屏幕剪辑1行为:
iPad上的屏幕剪辑2: 下面的代码也是我尝试过并且只工作了几次。如果我错过了什么,请你更正下面的代码。
sap.m.Input.extend('com.Warehousemgt.controllers.GoodsIssueDetail.ClickableInput', {
metadata: {
events : {
click: {}
}
},
renderer: {},
onAfterRendering: function() {
if (sap.m.Input.prototype.onAfterRendering) {
sap.m.Input.prototype.onAfterRendering.apply(this, arguments);
}
$('input').on('focus click touchstart touchend',function(e) {
var ua = navigator.userAgent ;
if( ua.match(/iPhone/) || ua.match(/iPad/) ) {
$(this).get(0).setSelectionRange(0,9999);
}else
{
$(this).select();
}
});
$('input').on('mouseup',function(e) {
e.preventDefault();
});
}
});