Opera ブラウザに問題があります。左ダブルクリック/選択でコンテキストメニューを表示するのは1つだけです。空の div を含むページがあります (背景画像)。それらは click および contextmenu イベントをフックしており、クリックが遅いときにクリックは正常に機能します。2 倍の速さでクリックすると、テキストが選択されます。私が観察したのは、おそらくこれの主な理由は、全体を1行として扱っているという理由だけで、inline-blockを使用していることです。コード例は次のとおりです。
<!doctype html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/dojo.js" data-dojo-config="async: 1"></script>
</head>
<body>
<div style="display: inline-block;">
<table>
<tr>
<th colspan="3">Header</th>
</tr>
<tr>
<td></td>
<td>
<div id="test" style="height: 38px; width: 38px; background: red;">
</div>
</td>
<td></td>
</tr>
</table>
</div>
<div style="display: inline-block;">
<table>
<tr>
<th colspan="3">Header</th>
</tr>
<tr>
<td></td>
<td>
<div id="test" style="height: 38px; width: 38px; background: red;">
</div>
</td>
<td></td>
</tr>
</table>
</div>
</body>
</html>
<script type="text/javascript">
require(["dojo/dom", "dojo/on","dojo/domReady!"], function(dom, on) {
on(dom.byId('test'), 'click', function() { /* do something here */ return false; });
});
</script>
inline-blockを残して、それを防ぐことは可能ですか? 可能であれば、Dojo を使用したソリューションに特に関心があります。