[英]How to simulate a Real Mouse click for DOJO
我有一个基于HTML5的Web应用程序...在其中,我有一个用于一些用户操作的dojo对话框...现在,我想单击该对话框的标题栏...该对话框的标题栏是可通过ele = document.getElementById("searchFrame_title");
...
我正在通过此按钮单击对话框的标题栏
ele = document.getElementById("searchFrame_title");
ele.style.cursor = 'move';
var evt = new MouseEvent("click", {
view : window,
bubbles : true,
cancelable : true,
}), ele = document.getElementById("searchFrame_title");
ele.dispatchEvent(evt);
alert("clicked");
虽然一切都很好,但是单击dojo对话框的标题栏时,它不会出现在可见区域中...
方案...
我拖动了网页底部的对话框(真正的底部将其向上推)。 然后我在对话框上单击了一下,该对话框在对话框上附加了一些数据,由于所附加的数据进入了屏幕内部。
问题...
当我手动单击标题栏时,对话框自动将其向上移动到从底部计算出的可视区域。 但是当我模拟代码中的点击(如上所示)时,它并没有这么做...
怎么做...
定位不是在单击时完成,而是在结束拖动时完成。 模拟点击不会触发拖动机制。
但是,您可以解决它。 那是一个肮脏的把戏,但是您可以调用对话框的_endDrag()
方法(而不是模拟单击),请参见:
require(["dijit/Dialog", "dojo/domReady!"], function(Dialog){ var dialog = new Dialog({ content: document.getElementById('dialogContent') }); dialog.show(); document.getElementById('repositionMe').onclick = function() { dialog._endDrag(); } document.getElementById('addTo').onclick = function() { document.getElementById('content').innerHTML += '<br>' + document.getElementById('content').innerHTML; } });
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script> <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/resources/dojo.css"> <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dijit/themes/tundra/tundra.css"> <body class = "tundra"> <div id="dialogContent"> <button id="addTo">add content</button> <button id="repositionMe">reposition me</button> <div id="content">this is the content of the dialog</div> </div> </body>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.