我想在我的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);
});
Run Code Online (Sandbox Code Playgroud)
如果我添加以下行
'target' : target,
Run Code Online (Sandbox Code Playgroud)
在MouseEvent创建中,将不会设置该属性(但所有其他属性都将设置),并且target-property将为null,但target本身不为null.
是否有可能以某种方式设置目标属性?如果有可能我想知道我做错了什么?
编辑:
我发现了一个非常脏的解决方案,其中包括来自底层框架的小部件中的最小但不期望的更改.
我只能实现relatedTarget属性设置,而target仍然是null.如果检查target属性为null,并且如果它为null,则relatedTarget在widgets方法中,一切都按预期工作.模拟的点击和真正的点击都正常工作.
这个解决方案的唯一问题是我必须修改框架中的小部件.这是我们在发布版本中不会做的事情.这是一种可能的解决方案,但实际上这种解决方案对我们来说是不可接受的.
因此,仍然存在如何target使用正确的值设置属性的问题.正如解决方案在genereal中所显示的那样,除了设置target属性外,它都可以工
我无法看到这是通过Ferry Kranenburg提出的解决方案实现的.如果这个解决方案能够满足我的需要,那么如果有人可以向我解释这个技巧,那就太好了.
我有这段代码:
window.addEventListener('keydown', function (e) {
console.log(e.which);
console.log(e.keyCode);
});
var evObj = new KeyboardEvent('keydown', {key:65});
window.dispatchEvent(evObj);
Run Code Online (Sandbox Code Playgroud)
为什么我在控制台看到0而不是65?
e.keyCode和e.which都是0而不是65,我在Chrome最新版本
非常感谢.
另一个相关问题仅说明如何通过 Chrome 提供的 GUI 打开/关闭 JavaScript。但是,我想从 Chrome 控制台以编程方式切换 JavaScript ,或者通过一次击键(例如点击 F12)来切换 JavaScript。
我想要这种能力的原因是因为我正在开发一个 Web 应用程序,它有一个我想要修改的下拉菜单;我不确定这个下拉菜单在代码库中的位置,所以我想暂停执行并检查它。每当我单击任何开发人员工具选项以暂停执行时,它都会关闭下拉菜单。
一个潜在的解决方案是简单地将调试器放在下拉菜单所在的代码中,但这是一个先有鸡还是先有蛋的问题,因为暂停执行的全部目的是找到该下拉菜单在代码库中的位置。
我使用的是 Chart.js 2.0 beta2,页面和滑块上有几个折线图。我想突出显示每个折线图上与滑块位置匹配的数据点(它们都具有相同的点数)。我不知道如何轻松地在代码中激活一个点。感谢您的任何提示。
出于某种原因,我可以单击某些链接/按钮,但不能用于具有onclick属性的按钮/任何内容.例如:我输入浏览器控制台的JavaScript代码:
var o = document.getElementsByName("takepic");
for (var i = 0; i < 1000; i++){
o.click();
console.log(i);
}
Run Code Online (Sandbox Code Playgroud)
我把console.log放进去,所以我知道浏览器正在做什么,以及它目前在哪里.
页面上的html代码:
<form>
<input type="button" value="Configure..." onclick="webcam.configure()">
<input type="button" value="Take Snapshot" onclick="take_snapshot()" name="takepic">
</form>
Run Code Online (Sandbox Code Playgroud)
基本上,我想使用浏览器控制台拍摄快速快照,但是当我输入我的代码时,我收到此错误:
TypeError:Object#没有方法'click'
当我使用相同的代码时,比如在Facebook上重新添加朋友,我使用这个:
var o = document.getElementsByName("fbaddfriend_example");
for (var i = 0; i < o.length; i++){
o[i].click();
console.log(i);
}
Run Code Online (Sandbox Code Playgroud)
绝对有效.我只是试图用页面上的按钮做同样的事,但没有用.
下面的代码在IE7上工作正常,但在Safari(5.0.5)中没有.如果可能的话,我想避免使用jQuery.目标是使此功能在iPad上运行,但现在正在使用桌面游戏进行测试.如果您有任何关于在IE和Safari上工作的想法,请告诉我.
<div id="test" ></div>
<script>
function attachCallback(node) {
node.onclick = function() {
alert("coming here");
} ;
}
var retrybutton = document.createElement("img");
retrybutton.src = "test.png";
retrybutton.alt = "retry";
retrybutton.setAttribute("id","retrybutton");
attachCallback( retrybutton ) ;
var a = document.getElementById("test");
a.appendChild(retrybutton);
// testing without using retrybutton
var test = document.getElementById("retrybutton");
test.click();
</script>
</body></html>
Run Code Online (Sandbox Code Playgroud)
更新:辩论是否与"onmouseup"或类似下面的东西[ 谢谢Andres !! 我无法添加评论]
if (Prototype.Browser.IE) {
document.getElementById("retrybutton").click();
} else { // from question link in comment
var event = document.createEvent("HTMLEvents");
event.initEvent("click", true, true);
document.getElementById('retrybutton').dispatchEvent(event);
}
Run Code Online (Sandbox Code Playgroud) 给定以下标记:
<audio controls onclick="alert('hi')">
<source src="/url/track.mp3" type="audio/mpeg">
</audio>
Run Code Online (Sandbox Code Playgroud)
我没有收到来自onclick事件的响应。似乎所有onclick事件都绑定到播放器控件。
我的目标是在用户点击“播放”时运行一个单独的功能。
我试图在JavaScript中使用"window.location.href"下载base64数据.它在Chrome中工作正常,但相同的代码在IE11中不起作用.
你可以告诉我这个修复或解决方法吗?
这是代码:Javascript:
function DownloadPdf() {
window.location.href = "data:application/pdf;base64,JVBERi0xLjMNJeLjz9MNCj........Pg1zdGFydHhyZWYNMTczDSUlRU9GDQ=="
Run Code Online (Sandbox Code Playgroud)
}
function DownloadExcel() {
window.location.href = "data:application/vnd.ms-excel;base64,UEsDBBQABgAIAAAAIQB......BLBQYAAAAACgAKAIACAACzHAAAAAA="
}
Run Code Online (Sandbox Code Playgroud)
HTML:
注意:
我正在开发一个离线网站,我将文件存储在base64字符串格式的浏览器localStorage中,该格式未连接到服务器.我没有任何物理文件.
其中一个功能是,当用户点击某些内容时,会发生一些事情.如何在不调用函数的情况下模拟此单击?
在浏览了众多论坛上的大量帖子之后,没有一个帖子能够接近我想要完成的目标的解决方案。
这是我想要实现的目标:
我在 iframe 上有一个页面,我想单击该 iframe 内的 div 标签。我该如何操作。我见过具有鼠标事件模拟器的脚本,但我不知道如何使用它们。
站点 1 =http://site1.com/page.html
站点 2 =http://site2.com/abc.html
站点 2 的代码: 代码:
<div>
<div>
<div attribute="text" onClick="somefnc();">
james bond
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
站点 1 的代码:
代码:
<iframe src="http://site2.com/abc.html></iframe>
Run Code Online (Sandbox Code Playgroud)
我想做的是有一个自动单击 james bond(div 内的文本)的脚本,记住我无法控制http://site2.com/abc.html
最好列出可以实现这一目标的方法,以及我在哪里可以免费学习这种类型的“DOM”(主要处理鼠标事件的javascript)。非常感谢任何参考。非常感谢逐步浏览代码。
我是这方面的菜鸟。
到目前为止我已经尝试过:
尝试1:JavaScript
.click();
Run Code Online (Sandbox Code Playgroud)
尝试1的错误:跨域问题
尝试2:鼠标模拟
尝试2的错误:菜鸟代码对我来说太复杂了
请帮忙。
猜测解决方案
类似脚本的鼠标模拟
一些简洁的 jquery 代码
AJAX,也许是 PHP