javascript如何模拟鼠标点击a便签
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript如何模拟鼠标点击a便签相关的知识,希望对你有一定的参考价值。
<div class="bt"><a id="vBtn" href="javascript:;">确认</a></div>
获取a标签元素,然后后面.click()即可.
给个例子把:
<!doctype html><html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<a href="这里是a标签的路径">这里是a标签的名称</a>
<button onclick="fn()">点击打开a标签</button>
<script>
var a = document.getElementsByTagName('a')[0];
function fn()
a.click();
</script>
</body>
</html> 参考技术A javascript选项没有设置鼠标的坐标。为了得到坐标(clientX,clientY)这些都是只读属性是不可写。如果你用JS来移动鼠标在这个违反安全原则的浏览器。
可以使用一些替代方法,说的方法我下使用(C#+ web浏览器):
添加Microsoft HTML库的参考。 WebBrowser控件里面加载的窗体。在页面加载后,让页面×100,该元件100点的y坐标一直是关注的焦点。然后单击此元素调用他的方法(这是由JS调用)。就是这样。 参考技术B 直接用jquery就好了
$('#vBtn').click(); 参考技术C
document.getElementById("vBtn").click();
本回答被提问者采纳在javascript中模拟鼠标点击时如何设置目标属性?
我想在我的javascript代码中使用dojo来模拟鼠标点击。使用带有“ondijitclick”的dojo-stuff注册真正鼠标点击的动作。
我知道调用哪个方法/函数,我也有dijit对象来调用这个方法。该方法需要一个函数对象作为参数,所以我正在创建一个新的MouseEvent对象。这一切都很好,除了我需要设置此事件的目标值,我无法弄清楚如何做到这一点。这是必需的,因为后来的异常处理正在访问target-property,我无法避免这种情况。
到目前为止我的代码:
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。
是否有可能以某种方式设置目标属性?如果有可能我想知道我做错了什么?
编辑:
我发现了一个非常脏的解决方案,其中包括来自底层框架的小部件中的最小但不期望的更改。
我只能实现relatedTarget
属性设置,而target
仍然是null。如果将target
属性检查为null,并且如果它为null,则在widgets方法中使用relatedTarget
,一切都可以正常工作。模拟的点击和真正的点击都正常工作。
这个解决方案的唯一问题是我必须修改框架中的小部件。这是我们在发布版本中不会做的事情。这是一种可能的解决方案,但实际上这种解决方案对我们来说是不可接受的。
因此,我仍然可以设置如何使用正确的值设置target
属性。正如解决方案在genereal中显示的那样,除了设置target
属性之外,它都可以工作。
我无法看到这是通过Ferry Kranenburg提出的解决方案实现的。如果这个解决方案能够满足我的需求,那么如果有人可以向我解释这个技巧,那就太好了。
初始化事件时,无法访问事件对象的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);
});
您需要先创建一个事件。 See here如何模拟鼠标事件。
以上是关于javascript如何模拟鼠标点击a便签的主要内容,如果未能解决你的问题,请参考以下文章