在iOS Safari

时间:2016-10-17 15:06:01

标签: javascript html ios select safari

我在iPhone 6 / iOS 10.0.2和iOS模拟器中遇到了一个相当奇怪的错误:在< select>之后元素已经使用javascript从DOM中删除,它仍会在稍后的事件后弹出(不太确定触发它的是什么)。这是一个非常简单的例子: < HTML>     < HEAD>         < script type =“text / javascript”>             function removeSelect(){                 var parent = this.parentNode;                 if(parent!= null){                     parent.removeChild(本);                     的document.getElementById( “DIV”)的appendChild(document.createTextNode(parent.tagName));                 }                 其他{                     document.getElementById(“div”)。appendChild(document.createTextNode(“null parent”));                 }             }             window.onload = function(){                 document.getElementById(“sel”)。addEventListener(“input”,removeSelect);             }         < /脚本>     < /头>     <身体GT;         < div id =“div”>             < select id =“sel”>                 <选项>首先< /选项>                 <选项>第二个< /选项>                 <选项>第三< /选项>             < /选择>             <按钮> ABC< /按钮>         < / DIV>     < /体> < / HTML> 我正在使用在我的iMac上运行的Apache2服务器进行测试,通过WiFi从我的iPhone访问页面,所以基本上是http://imac.local/test/test.html。我不认为服务器有任何影响。 如您所见,此页面没有太大作用,只需删除< select>当值改变时从DOM。这在任何浏览器中都“正常”,即< select>选中一个值后,按钮会在按钮后面附加消息。在iPhone上的Safari中,选择一个值会删除< select>元素并添加DIV,但之后点击按钮时< select>菜单将再次显示所有原始选项,并且在选择值后,在DIV之后附加文本空父项。这实际上永远持续下去,即< select>单击按钮时始终触发。在iOS模拟器中也是如此。 请注意,在实际更改< select>中的值之前单击ABC按钮。 (如预期的那样)绝对没有效果。另请注意,如果将javascript代码修改为不删除< select>,则单击该按钮时不会弹出菜单。 有人可以确认这实际上是按照我遇到的方式发生的,有没有人知道为什么会这样?难道我做错了什么?如果不是,有人知道如何防止这种情况发生吗? 非常感谢!

0 个答案:

没有答案