在javascript中模拟鼠标点击时如何设置目标属性?

2023-11-24

我想在使用 dojo 的 javascript 代码中模拟鼠标单击。真正的鼠标单击操作将使用 dojo-stuff 和“ondijitclick”进行注册。

我知道调用哪个方法/函数,并且我还有 dijit 对象来调用此方法。该方法需要一个函数对象作为参数,因此我正在创建一个新的 MouseEvent 对象。这一切都工作正常,除了我需要设置此事件的目标值并且我不知道如何执行此操作。这是必要的,因为稍后的异常处理正在访问目标属性,我无法避免这一点。

到目前为止我的代码:

    dojo.query(".mybutton").forEach(function (node) {
        var target = dojo.query(".myclass").parents("#" + node.id)[0];
        var event = new MouseEvent('click', {
            'view' : window,
            'bubbles': true,
            'cancelable': true
        });
        dijit.byId(node.id)._doEvent(event);
    });

如果我添加以下行

            'target' : target,

在 MouseEvent 创建中,不会设置该属性(但所有其他属性都会设置),并且 target-property 将为 null,但 target 本身不为 null)。

是否有可能以某种方式设置目标属性?如果可能的话我想知道我做错了什么?

Edit:

我发现了一个非常肮脏的解决方案,其中包括来自底层框架的小部件的最小但不期望的更改。

我只能做到这一点relatedTarget属性设置同时target仍然将为空。如果检查target属性为 null,如果为 null 则取relatedTarget在小部件方法中,一切都按预期工作。模拟点击和真实点击均正常。

这个解决方案的唯一问题是我必须修改框架中的小部件。这是我们在发布版本中不会做的事情。一般来说这是一个可能的解决方案,但实际上这个解决方案对我们来说是不可接受的。

所以仍然存在一个问题,我如何设置target具有正确价值的财产。正如该解决方案一般所示,除了设置target财产。

我看不出 Ferry Kranenburg 提出的解决方案可以实现这一点。如果这个解决方案满足我的需要,那么如果有人可以向我解释这个技巧,那就太好了。


The target当事件初始化时,无法访问事件对象的属性。它指向事件触发后接收事件的第一个元素,并由 JavaScript 在内部设置为该元素。因此,如果您需要一个特殊元素作为事件目标,则必须将事件分派到该元素。

一种方法是使用您自己的方法覆盖本机目标属性,但这可能会影响事件的冒泡行为。

dojo.query(".mybutton").forEach(function (node) {
  var target = dojo.query(".myclass").parents("#" + node.id)[0];
  var event = new MouseEvent('click', {
    'view' : window,
    'bubbles': true,
    'cancelable': true
  });
  Object.defineProperty(event, 'target', {value: target, enumerable: true});
  dijit.byId(node.id)._doEvent(event);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在javascript中模拟鼠标点击时如何设置目标属性? 的相关文章

随机推荐

  • Algolia 搜索网络错误

    我正在将 Algolia 与我拥有的 Firebase 项目连接起来 我使用 Firebase Cloud Functions 来使 Algolia 索引与 Firebase 数据库中发生的所有更改保持同步 但每当我打电话 索引 saveO
  • 为什么 CMP(比较)有时会在 8086 汇编中设置进位标志?

    我一直在阅读 8086 指令集 它说 CMP 比较 可以设置进位标志 我知道比较会减去两个操作数 但我想知道在这种情况下是否有人可以提供一个示例 我只是无法理解添加数字和负数将设置进位标志的想法 我已经阅读了借用标志 但我只需要一个示例来阐
  • Bootstrap:移动显示上的列之间的间隙

    我正在使用 bootstrap 3 0 制作一个网站 我希望 HTML 和 CSS 能够在桌面 平板电脑和移动设备上清晰地看到 我遇到的一个问题是 当您在移动显示器上查看该网站时 该列会堆叠在一起 我并不是在批评它 因为它会尽可能地停止滚动
  • 白名单不适用于人行横道离子

    我使用 ionic 创建了一个工作应用程序 从我的网站获取数据没有问题 一切都很好 然后我去添加人行横道 现在当我在 Android 手机上运行它时出现错误 W XWalkCordovaResourceClient URL blocked
  • 无法从传输连接读取数据:控制台应用程序中的连接已关闭错误

    我在控制台应用程序中有这段代码 它在循环中运行 try HttpWebRequest request HttpWebRequest WebRequest Create search request Headers Add Accept La
  • 使用 TextFieldParser 处理包含未转义双引号的字段

    我正在尝试使用导入 CSV 文件文本字段解析器 一个特定的 CSV 文件由于其非标准格式而给我带来了问题 相关 CSV 的字段用双引号括起来 当特定字段中有一组附加的未转义双引号时 就会出现此问题 这是一个过于简单的测试用例 突出了这个问题
  • 谷歌地图 api v3 - 从外部点击打开信息窗口

    所以我有一个 V3 地图 其初始化如下 function init var mapCenter new google maps LatLng 51 5081289 0 128005 var map new google maps Map d
  • React 导航抽屉的状态? (打开或关闭)

    我正在使用 React Navigation 构建一个抽屉 并且希望在用户关闭抽屉时执行一些逻辑 我在文档中没有看到任何明显的内容可以让我做到这一点 有人知道有办法做到这一点吗 您需要自定义导航操作来捕获DrawerClose event
  • Java 将 GMT/UTC 转换为本地时间无法按预期工作

    为了展示可重现的场景 我正在执行以下操作 获取当前系统时间 当地时间 将当地时间转换为 UTC 在此之前工作正常 反转 UTC 时间 回到当地时间 遵循 3 种不同的方法 如下所列 但所有 3 种方法均仅保留 UTC 时间 long ts
  • python子进程模块:循环子进程的标准输出

    我有一些使用子进程模块运行的命令 然后我想循环输出的行 文档说不要做 data stream stdout read 我不是 但我可能正在做一些调用它的事情 我像这样循环输出 for line in data stream stdout d
  • 如何从决策树中提取规则spark MLlib

    我正在使用 Spark MLlib 1 4 1 创建决策树模型 现在我想从决策树中提取规则 如何提取规则 您可以通过调用 model toDebugString 以字符串形式获取完整模型 或通过调用 model save sc filePa
  • IE 11 浏览器将自身识别为 Mozilla [重复]

    这个问题在这里已经有答案了 我正在开发 MVC 应用程序 net 4 5 框架 VS 2010 我有一段 Javascript 代码 可以识别应用程序正在运行的浏览器 如果浏览器是 Firefox 则将执行特定的代码块 否则将执行另一个代码
  • 与名为 com.apple.nsurlstorage-cache 的服务的连接已失效

    我正在为 iOS8 创建自定义键盘 但我很难解决 NSURLConnection 的一些问题 我正在使用 sendAsynchronousRequest 方法 如下所示 NSURLConnection sendAsynchronousReq
  • 在 PHP 中从数组键创建新变量

    假设我有一个数组 如下所示 foo array first gt 1st second gt 2nd third gt 3rd 如何从数组中挑选键并使它们成为自己的变量 例如 数组 foo会成为 first 1st second 2nd t
  • iPhone 中从右到左的 UI(希伯来语)

    我正在努力在 iPhone 应用程序中创建 RTL UI 该框架似乎不支持 RTL 语言 唯一的事情是标签内的对齐 这很好 但它与其他控件的行为冲突 问题是 RTL TableView 有工作代码吗 有什么东西可以将公开按钮置于左侧 章节标
  • 如何为 Maven 创建新的打包类型?

    我需要使用 Maven 创建 jar 文件 但它们需要以 foobar 扩展名安装到存储库中 如果它们可以有自己的打包类型 这样我们就可以通过打包来识别这些工件 那就太好了 我可以设置新的包装类型来执行此操作吗 要按照您的描述进行操作 请创
  • 是否可以直接从 GDI+ 位图进行 BitBlt?

    是否可以使用 BitBlt 直接从 GDI 位图中复制而不使用 GetHBitmap GetHBitmap 很慢 因为它除了 BitBlt 副本之外还创建整个图像的新副本 并且比 BitBlt 副本慢 并且必须处理给定的 HBITMAP 图
  • 将 [key1,val1,key2,val2] 转换为字典?

    假设我有一个清单a在 Python 中 其条目可以方便地映射到字典 每个偶数元素代表字典的键 后面的奇数元素是值 例如 a hello world 1 2 我想把它转换成字典b where b hello world b 1 2 完成此任务
  • 是否可以从自定义显示或编辑器模板访问其他元数据信息?

    我知道在自定义显示或编辑器模板中 我可以通过以下方式获取有关模型的元数据ViewData ModelMetadata 其中具有指示是否已为该属性定义某些元数据属性的属性 例如IsRequired DisplayName 等等 但是我是否可以
  • 在javascript中模拟鼠标点击时如何设置目标属性?

    我想在使用 dojo 的 javascript 代码中模拟鼠标单击 真正的鼠标单击操作将使用 dojo stuff 和 ondijitclick 进行注册 我知道调用哪个方法 函数 并且我还有 dijit 对象来调用此方法 该方法需要一个函