Javascript 点击<;标签>;在移动狩猎中

Javascript 点击<;标签>;在移动狩猎中,javascript,ios,forms,Javascript,Ios,Forms,点击不会在Mobile Safari中自动聚焦链接,但如果定义了clickhandler等空函数 像这样 document.getElementById("test_label").onclick = function () {}; 解决了这个问题 <label for="test" id="test_label" onclick=""> 这是完整的源代码 <body> <input type="checkbox" id="test" name="tes

点击
不会在Mobile Safari中自动聚焦链接,但如果定义了clickhandler等空函数 像这样

document.getElementById("test_label").onclick = function () {};
解决了这个问题

<label for="test" id="test_label" onclick="">
这是完整的源代码

<body>
    <input type="checkbox" id="test" name="test">
    <label for="test" id="test_label">This is the label</label>
    <script>
      document.getElementById("test_label").onclick = function () {};
    </script>
</body>

这是标签
getElementById(“测试标签”).onclick=function(){};

你知道它为什么工作吗?

看起来你在iOS Safari中发现了一个bug。祝贺发现和报告bug会让人上瘾

您可以在向Apple报告此错误和其他错误。苹果可能不会立即跟进,但在将来的某个时候,他们应该通知你这是一个现存的bug的复制品,他们不认为它是一个bug,或者(如果你幸运的话)你应该在新版本的iOS中再次测试它。
同时,请抓住这个变通方法—您将需要它。

我们能够在Etsy解决这个问题,只需将这一行代码添加到全局javascript文件中即可

$('label').click(function() {});

我们使用的是xui micro js库,该行只是将一个空的点击处理程序附加到所有
标签
元素上。出于某种原因,这神奇地解决了mobile safari上的问题。

如果已经存在onclick属性,则不应覆盖它,在我的测试中,它起作用(onclick属性)并单击了复选框。因此,我的解决方案是:

<script type="text/javascript">
    var labels = document.getElementsByTagName("LABEL");
    var labels_l = labels.length;
    for(var l = 0; l < labels_l; l++){
        if(labels[l].hasAttribute("for") && (!labels[l].hasAttribute("onclick"))){
            labels[l].onclick = function () {};
        }
    }
</script>

var labels=document.getElementsByTagName(“标签”);
var labels\u l=labels.length;
对于(var l=0;l
我知道它不是很好的标记:我只是在每个标签上硬编码了一个空的onclick,就像这样
onclick=“”
。在包装标签上起作用的:

<label for="myID" onclick="">
 <input type="checkbox" id="myID" name="myNAME">
 Check to check
</label>

核对

在iOS 7中,这个问题仍然存在,我没有任何解决办法

我的解决方案是将
click
事件与
touchend
相结合:

var handler = function(e) { /* do stuff */ };
$("ol input[type=checkbox] ~ label")
  .on('touchend', handler)
  .on('click', handler);

这个JQuery问题中的一些有用信息:特别是它说在技术上没有移动设备上的
点击事件的部分

添加onclick属性可以解决这个问题

<label for="test" id="test_label" onclick="">

使用FastClick的人:

使用此CSS:

label > * {
    display: block;
    pointer-events: none;
}
见本期:


这个代码笔:

我刚刚解决了类似的问题,如下所示:

input {
position: absolute;
width: 120px; // size of my image
height: 100px; // size of my image
opacity: 0;
display: inherit; // Because i'm hidding it on other resolutions
}

一些非常奇怪的行为发生在我身上,上面的任何一个都不能解决它。如果我在label元素中放置了文本或图像,那么单击该元素就不起作用。但是,当我在标签上添加边距和填充物时,单击边距或填充物(而不是文本/图像)确实有效。所以我所做的就是将标签100%w 100%h绝对定位在我的文本和图像上

<div class="wrapper">
  <label class="label-overlay" for="file"></label>
  <img src="something.png">
  <p>Upload File</p>
  <input type="file" name="file">
</div>


<style>
  .wrapper{display:inline-block;}
  .label{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;}
</style>

上传文件

.wrapper{显示:内联块;} .label{位置:绝对;顶部:0;左侧:0;宽度:100%;高度:100%;光标:指针;}
或者您可以让for=“”,并在单击标签时聚焦输入,这是react中的代码工作

<input ref={(node) => { this.input = node; }} />

<label htmlFor="" onClick={() => { this.input.focus();}}/>
{this.input=node;}}/>
{this.input.focus();}}/>

你能发布你的html吗?是
点击此处
谢谢提问。正在寻找解决该漏洞的方法。这个点击救了我:)如果你提交了一个bug,让我们知道他们回答了你什么#wtfOn包装标签不管怎样,处理程序是不必要的。在iPhone Safari上,这并没有立即起作用。我不得不在iOS 7上设置onclick=“;”,我仍然遇到类似的问题。无法获取
单击
标签
标签上开火。奇怪而且非常令人沮丧。我对引导标签也有类似的问题。我用类选择器添加了这段代码。标签和一切都起作用了。耶!我喜欢狩猎:)真的吗?您不能是web开发人员;)没有想到这一点,第三方开发了这个混合应用程序。你用过FastClick吗?我找了一整天了。谢谢我今天在Safari iOS 12上的Angular 7项目中遇到了这个问题,该项目带有一个自定义样式的复选框。单击标签时未发生视觉状态更改。在输入中添加了模板标识符属性,例如
#someid
,并在标签上单击“
”=“someid.focus()”
。。。瞧!谢谢:-D
<input ref={(node) => { this.input = node; }} />

<label htmlFor="" onClick={() => { this.input.focus();}}/>