Javascript 在自动聚焦ios web浏览器上强制显示键盘
有很多话题都在讨论这个问题,但似乎都是老生常谈的,与此无关(还有更多的ios发布) 我开发了一个通过网络浏览器运行的应用程序,无论是safari还是firefox(在iPad上)。该网页对输入有自动对焦功能,我需要强制打开键盘 我曾尝试过使用大量jQuery黑客来进行聚焦、超时等操作,但没有任何成功。我读到cordova可能会这样做,但在我重新开发应用程序之前,是否有其他JS库可以轻松地“插入”到我现有的html页面 最近的一段代码是,当我按下页面上的按钮时,它会将焦点放在我的表单输入上,并显示键盘:Javascript 在自动聚焦ios web浏览器上强制显示键盘,javascript,jquery,html,ios,Javascript,Jquery,Html,Ios,有很多话题都在讨论这个问题,但似乎都是老生常谈的,与此无关(还有更多的ios发布) 我开发了一个通过网络浏览器运行的应用程序,无论是safari还是firefox(在iPad上)。该网页对输入有自动对焦功能,我需要强制打开键盘 我曾尝试过使用大量jQuery黑客来进行聚焦、超时等操作,但没有任何成功。我读到cordova可能会这样做,但在我重新开发应用程序之前,是否有其他JS库可以轻松地“插入”到我现有的html页面 最近的一段代码是,当我按下页面上的按钮时,它会将焦点放在我的表单输入上,并显示
<script type="text/javascript">
window.addEventListener('DOMContentLoaded', function() {
var button = document.querySelector('#button');
var input = document.querySelector('#input');
var focus = function(e) {
e.stopPropagation();
e.preventDefault();
var clone = input.cloneNode(true);
var parent = input.parentElement;
parent.appendChild(clone);
parent.replaceChild(clone, input);
input = clone;
window.setTimeout(function() {
input.value = input.value || "";
input.focus();
}, 0);
}
button.addEventListener('mousedown', focus);
button.addEventListener('touchstart', focus);
}, false);
</script>
addEventListener('DOMContentLoaded',function(){
var button=document.querySelector(“#button”);
var input=document.querySelector(“#input”);
变量焦点=函数(e){
e、 停止传播();
e、 预防默认值();
var clone=input.cloneNode(true);
var parent=input.parentElement;
父。子(克隆);
parent.replaceChild(克隆,输入);
输入=克隆;
setTimeout(函数(){
input.value=input.value | |“”;
input.focus();
}, 0);
}
按钮。addEventListener('mousedown',focus);
按钮。addEventListener('touchstart',focus);
},假);
是否有任何方法可以模拟单击按钮,我尝试了以下方法,但在任何浏览器上都不起作用,更不用说IOS了:
<script type="text/javascript">
$(document).ready(function() {
$("#button").click();
});
</script>
$(文档).ready(函数(){
$(“#按钮”)。单击();
});
简而言之,我能模拟一下点击这个按钮吗?如果我能在我的桌面上使用它,我会祈祷它能在IOS上使用
或者如果其他人有任何建议/想法/技巧,我将不胜感激
我上面代码的工作示例取自
编辑:
因此,我可以在一段时间延迟后(使用MouseeEvent)强制按下按钮,以模拟现实生活中的触地事件,但它只将焦点放在ios上的输入框上,不会出现键盘提示叹息(虽然它在桌面浏览器上工作),看起来我必须用cordova重新编写
<script type="text/javascript">
$(document).ready(function() {
function focusinput(){
var evt = new MouseEvent("touchstart", {
view: window,
bubbles: true,
cancelable: true,
clientX: 20,
/* whatever properties you want to give it */
}),
ele = document.getElementById("button");
ele.dispatchEvent(evt);
}
function focusinputa(){
var evt = new MouseEvent("mousedown", {
view: window,
bubbles: true,
cancelable: true,
clientX: 20,
/* whatever properties you want to give it */
}),
ele = document.getElementById("button");
ele.dispatchEvent(evt);
}
;
setTimeout(focusinput, 1000);
setTimeout(focusinputa, 1500);
});
</script>
$(文档).ready(函数(){
函数焦点输入(){
var evt=new MouseEvent(“touchstart”{
视图:窗口,
泡泡:是的,
可取消:对,
客户端:20,
/*不管你想给它什么属性*/
}),
ele=document.getElementById(“按钮”);
电气调度事件(evt);
}
函数focusinputa(){
var evt=新的MouseEvent(“mousedown”{
视图:窗口,
泡泡:是的,
可取消:对,
客户端:20,
/*不管你想给它什么属性*/
}),
ele=document.getElementById(“按钮”);
电气调度事件(evt);
}
;
设置超时(聚焦输入,1000);
setTimeout(focusinputa,1500);
});
编辑2:
在本机html/js网页中,似乎根本没有办法做到这一点(在编写本ios 9.1时),如果有人有任何其他解决方案或想法需要测试,我很乐意进行测试,但到目前为止,我不得不求助于手动点击按钮来集中输入并打开键盘提示。我也有类似的问题,经过大量测试,我得到了一个简单的解决方案,我希望它能帮助任何人;) 首先,Safari显然是焦点,但没有打开键盘。因此,我尝试将我的更改为。这对我有用
<label for="search" id="mobile-search">Search</label>
<input type="text" name="search" id="search" value="">
<script type="text/javascript">
$('#mobile-search').on('click', function() {
// do your stuff, in my case some class changes
});
</script>
搜索
$(“#移动搜索”)。在('click',function()上{
//做你的事,在我的情况下,一些班级的变化
});
只需确保不要使用.preventDefault()单击事件。您没有绑定单击事件,而是
mousedown/touchstart
。所以至少试试$(“#按钮”).mousedown()代码>或$(“#按钮”)。触发器('touchstart')代码>。但也就是说,我真的不确定它是否会起作用。遗憾的是,这不起作用,我应该补充说我确实尝试过。下一步是尝试,但我想它不会起作用“此功能已从Web标准中删除”可能最好不要走这条路……抱歉,链接不正确,这里有,但看起来Safari不支持它,真是个惊喜。。。