私のWebアプリケーションでは、さまざまなZインデックスでiframeを使用しています。私はiframeのいくつかの要素でtouchstart
イベントを検出しています。しかし、入力フィールドがテキスト入力フィールドと重なってtouchstart
となっていると、入力フィールドが不安定になります。フィールドの2回目のタップはフォーカスを外しますが、テキストを選択することはできませんが、テキストフィールド。iframeとontouchstartを使用したMobile Safariでのテキスト選択のバグ
唯一の解決方法は、バックグラウンドフレームでtouchstart
イベントのキャプチャを停止することです。私は、仲介者としてイベントをキャプチャするために透明なdiv
のようなソリューションを好むだろうが、私はまだそれを取得していない。その他の回避策がありますか?
サンプル・ページはjsfiddleであるが、ここではコードは次のとおりです。
<!DOCTYPE html>
<html>
<head>
<style type='text/css'>
iframe {
position:absolute;
}
#background {
border: solid 3px red;
z-index:1;
width: 20em;
height: 20em;
}
#foreground, #foreground2 {
border: solid 2px yellow;
z-index:2;
top: 15em;
height: 5em;
}
#foreground2 {
top: 22em;
}
</style>
<script type='text/javascript'>
window.onload=function(){
document.getElementById("foreground").contentDocument.write("<input type='text' value='text'/><input type='text'/>");
document.getElementById("foreground2").contentDocument.write("<input type='text' value='text'/><input type='text'/>");
document.getElementById("background").addEventListener("touchstart", function() {
console.log("touch");
});
}
</script>
</head>
<body>
<iframe id=background></iframe>
<iframe id=foreground></iframe>
<iframe id=foreground2></iframe>
</body>
</html>
私はバグを追跡するためにこれを提出:https://bugs.webkit.org/show_bug.cgi?id=156518 それはbugs.webkit.orgを使用してWebKitのバグを報告することは常に良い考えです。 – ddkilzer