无法通过 Chrome 上的 JavaScript 控制台在 <tr> 元素上触发 onmouseup 事件
Unable to trigger onmouseup event on an <tr> element through JavaScript console on Chrome
无法通过 Javacript 控制台在 "tr" 元素 上触发 onmouseup 事件 Chrome.
元素是这样的(抱歉不能分享确切的代码):
< tr class="one" style="height:20px;" onmouseup="click(event,this)"> Text </tr>
在控制台中,我执行了以下步骤:
document.getElementsByClassName("one")[0].onmouseup()
我收到错误:
Uncaught TypeError: Cannot read property 'metaKey' of undefined
at Object.i [as click] (filename:linenumber)
at HTMLTableRowElement.onmouseup (Workbox?ajax:1)
at <anonymous>:1:45
在附带的js源文件中,在给定行号的函数i中,
event.metaKey 正在检查中:
n = b.metaKey || b.ctrlKey
在这一行,错误显示。
这个事件在我自己用手(鼠标)点击时有效。当我使用命令做同样的事情时,它无法 运行 没有错误。由于这个 'metaKey' 没有正确传递给它。我可以通过 onmouseup() 调用传递它吗?还有别的办法吗?在 mouseEvents 的上下文中,metakey 到底指的是什么?
在其他问题上,据说 "Win" 键是 metaKey。但是当手动点击时,我不按任何其他键,只按鼠标。它在那里如何运作?
我的最终目标是在同一元素上调用相同的函数 onmouseup,但在 Java 中使用 selenium 库。我还在使用 xpath 获得的元素上使用 JavaScript Executor。它也在那里给出了同样的错误。
所以如果这行得通,它也应该在那里工作。
我仔细检查了是否选择了相同的元素,而不是其他元素。
我该怎么做才能解决这个问题?
这样您就可以将事件与您需要的数据绑定(修复错误,或出于任何其他原因)-
var e = new Event('mouseup');
document.getElementsByClassName("one")[0].trigger(e);
正如@teemu 在评论中所说,您正在做的不是事件触发器,只是对函数 onmouseup()
的调用。问题是此调用没有在您的示例中称为 b
的事件参数,因此 n = b.metaKey || b.ctrlKey
是 n = undefined.metakey || undefined.ctrlKey
要创建鼠标弹起事件,您可以使用:
newEvt = new MouseEvent("mouseup", {
bubbles: true,
cancelable: true,
screenX: <your wanted X value>,
screenY: <your wanted Y value>,
clientX: <your wanted X value>,
clientY: <your wanted Y value>
});
// screenX, screenY, clientX and clientY are optionals and default to 0
document.getElementsByClassName("one")[0].dispatchEvent(newEvt);
请参阅 MDN MouseEvent 文档:https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent
关于元键,它们对应于 mac 上的 windows key
或 ⌘key
(来源:https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/metaKey)
onmouseover 和 onmouseout
< tr class="one" style="height:20px;" onmouseover ="click('first value','2nd value')"> Text </tr>
并为
onmousedown="mouseDown()" onmouseup="mouseUp()"
这是例子
function mouseDown() {
document.getElementById("myP").style.color = "red";
}
function mouseUp() {
document.getElementById("myP").style.color = "green";
}
<p id="myP" onmousedown="mouseDown()" onmouseup="mouseUp()">
Click the text! The mouseDown() function is triggered when the mouse button is pressed down over this paragraph, and sets the color of the text to red. The mouseUp() function is triggered when the mouse button is released, and sets the color of the text to green.
</p>
<script>
function mouseDown() {
document.getElementById("myP").style.color = "red";
}
function mouseUp() {
document.getElementById("myP").style.color = "green";
}
</script>
无法通过 Javacript 控制台在 "tr" 元素 上触发 onmouseup 事件 Chrome.
元素是这样的(抱歉不能分享确切的代码):
< tr class="one" style="height:20px;" onmouseup="click(event,this)"> Text </tr>
在控制台中,我执行了以下步骤:
document.getElementsByClassName("one")[0].onmouseup()
我收到错误:
Uncaught TypeError: Cannot read property 'metaKey' of undefined
at Object.i [as click] (filename:linenumber)
at HTMLTableRowElement.onmouseup (Workbox?ajax:1)
at <anonymous>:1:45
在附带的js源文件中,在给定行号的函数i中, event.metaKey 正在检查中:
n = b.metaKey || b.ctrlKey
在这一行,错误显示。
这个事件在我自己用手(鼠标)点击时有效。当我使用命令做同样的事情时,它无法 运行 没有错误。由于这个 'metaKey' 没有正确传递给它。我可以通过 onmouseup() 调用传递它吗?还有别的办法吗?在 mouseEvents 的上下文中,metakey 到底指的是什么? 在其他问题上,据说 "Win" 键是 metaKey。但是当手动点击时,我不按任何其他键,只按鼠标。它在那里如何运作?
我的最终目标是在同一元素上调用相同的函数 onmouseup,但在 Java 中使用 selenium 库。我还在使用 xpath 获得的元素上使用 JavaScript Executor。它也在那里给出了同样的错误。 所以如果这行得通,它也应该在那里工作。
我仔细检查了是否选择了相同的元素,而不是其他元素。 我该怎么做才能解决这个问题?
这样您就可以将事件与您需要的数据绑定(修复错误,或出于任何其他原因)-
var e = new Event('mouseup');
document.getElementsByClassName("one")[0].trigger(e);
正如@teemu 在评论中所说,您正在做的不是事件触发器,只是对函数 onmouseup()
的调用。问题是此调用没有在您的示例中称为 b
的事件参数,因此 n = b.metaKey || b.ctrlKey
是 n = undefined.metakey || undefined.ctrlKey
要创建鼠标弹起事件,您可以使用:
newEvt = new MouseEvent("mouseup", { bubbles: true, cancelable: true, screenX: <your wanted X value>, screenY: <your wanted Y value>, clientX: <your wanted X value>, clientY: <your wanted Y value> }); // screenX, screenY, clientX and clientY are optionals and default to 0 document.getElementsByClassName("one")[0].dispatchEvent(newEvt);
请参阅 MDN MouseEvent 文档:https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent
关于元键,它们对应于 mac 上的 windows key
或 ⌘key
(来源:https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/metaKey)
onmouseover 和 onmouseout
< tr class="one" style="height:20px;" onmouseover ="click('first value','2nd value')"> Text </tr>
并为 onmousedown="mouseDown()" onmouseup="mouseUp()"
这是例子
function mouseDown() {
document.getElementById("myP").style.color = "red";
}
function mouseUp() {
document.getElementById("myP").style.color = "green";
}
<p id="myP" onmousedown="mouseDown()" onmouseup="mouseUp()">
Click the text! The mouseDown() function is triggered when the mouse button is pressed down over this paragraph, and sets the color of the text to red. The mouseUp() function is triggered when the mouse button is released, and sets the color of the text to green.
</p>
<script>
function mouseDown() {
document.getElementById("myP").style.color = "red";
}
function mouseUp() {
document.getElementById("myP").style.color = "green";
}
</script>