javascript - 如何为 DOJO 模拟真实鼠标点击

标签 javascript 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");

虽然一切都很好,但是单击道场对话框的标题栏时,它没有出现在可见区域中......

场景...

我将对话框拖到了网页底部(实际上底部再往上推就会向上)。然后我单击了在对话框上附加一些数据的框,因此附加的数据进入屏幕内部。

问题...

当我手动单击标题栏时,对话框会自动将其向上移动到从底部计算的可视区域。但是当我模拟代码中的点击(如上所示)时,它并没有这样做......

如何做...

最佳答案

定位不是在点击时完成的,而是在结束拖动时完成的。模拟点击不会触发拖动机制。

但是,您可以解决这个问题。这是一个肮脏的伎俩,但您可以调用对话框的 _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>

关于javascript - 如何为 DOJO 模拟真实鼠标点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31966425/

相关文章:

javascript - 道场鼠标悬停延迟

javascript - dojo.empty()/domConstruct.empty() 到底做了什么

datagrid - Dojo DataGrid - 从格式化程序获取数据存储项?

javascript - 使用 dojo 按类名删除元素

javascript - AJAX - 不返回值

javascript - 值为 &lt;input type ="text"> 的单选按钮

javascript - 具有不同 td 细胞和一个普通 td 细胞的 knockout 模板

javascript - 验证函数适用于 ValidationTextBox 但不适用于 FilteringSelect。为什么?

javascript - react 状态 Hook 设置回调触发两次的任何原因?

javascript - 使用 AJAX 从 PHP 函数获取 JSON 数据