gpt4 book ai didi

javascript - 在 Greasemonkey 脚本中循环添加图像和鼠标悬停事件?

转载 作者:行者123 更新时间:2023-11-28 02:10:14 24 4
gpt4 key购买 nike

我正在使用 Greasemonkey 和 JavaScript 来修改页面。我找到了所有外部链接并在链接之前添加了图像,我想在图像上添加鼠标悬停事件。我不知道如何在循环中做到这一点。这是我所拥有的:

var anchors = document.evaluate('//a[@target]',document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var icon4 = document.createElement('img');
icon4.src = '...';
for (var a = 0; a < anchors.snapshotLength; a++){
if (anchors.snapshotItem(a).href.substring(0,16) != location.href.substring(0,16)){
icon4.addEventListener('mouseover', function(){this.title = 'Hello'}, false);
icon4.addEventListener('mouseout', function(){this.title = ''}, false);
anchors.snapshotItem(a).parentNode.insertBefore(icon4.cloneNode(true),anchors.snapshotItem(a));
}
}

最佳答案

不要在这样的循环中使用匿名函数。这会导致内存和性能问题。

无论如何,使用the return value of insertBefore() 。像这样:

var anchors = document.evaluate (
'//a[@target]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null
);
var icon4 = document.createElement('img');
icon4.src = '...';

for (var a = 0; a < anchors.snapshotLength; a++) {
if (anchors.snapshotItem(a).href.substring(0, 16) != location.href.substring(0, 16)) {
var newNode = anchors.snapshotItem(a).parentNode.insertBefore (
icon4.cloneNode (true), anchors.snapshotItem (a)
);

newNode.addEventListener ('mouseover', myMouseInOutHandler, false);
newNode.addEventListener ('mouseout', myMouseInOutHandler, false);
}
}

function myMouseInOutHandler (zEvent) {
if (zEvent.type == "mouseover") {
zEvent.target.title = 'Hello';
}
else if (zEvent.type == "mouseout") {
zEvent.target.title = '';
}
}

关于javascript - 在 Greasemonkey 脚本中循环添加图像和鼠标悬停事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17217989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com