.click() 函数未触发
.click() Function doesn't Triggered
Body onload 触发一个名为“autoClicker”的函数来单击选定的“span”元素。它提醒这意味着函数正在正常调用。我控制台记录了我检查的元素,我选择正确。在最后一步它不会出现被点击,因为如果点击发生,下面的选项将可用。
亲爱的,我不知道为什么它没有点击,我期待你的宝贵贡献。
我添加到 theme.js 文件的功能
$(function autoClicker(){
console.log("it works!");
var x = document.getElementsByClassName("variant-text")[0];
x.click();
});
我想选择第一个“变体文本”类元素,您可以在 here
中找到
这是sneakershop网站,我想自动选择颜色,因为每个产品已经有一个颜色选项并且它加载XML服务,我们无法更改它它会在特定时间刷新。
如有帮助,不胜感激。
我认为问题是您先加载 theme.js
<script type="text/javascript" src="//st2.myideasoft.com/idea/hs/56/themes/selftpl_602d7702ef274/assets/javascript/theme.js?revision=7.1.3.2-5-1625248516"></script>
<script type="text/javascript" src="//st2.myideasoft.com/idea/hs/56/themes/selftpl_602d7702ef274/assets/javascript/navigation-menu.js?revision=7.1.3.2-5-1625248516"></script>
<script type="text/javascript" src="//st3.myideasoft.com/idea/hs/56/themes/selftpl_602d7702ef274/assets/javascript/lazyload.min.js?revision=7.1.3.2-5-1625248516"></script>
<script type="text/javascript" src="//st3.myideasoft.com/idea/hs/56/themes/selftpl_602d7702ef274/assets/javascript/jquery.elevatezoom.js?revision=7.1.3.2-5-1625248516"></script>
<script type="text/javascript" src="//st1.myideasoft.com/idea/hs/56/themes/selftpl_602d7702ef274/assets/javascript/product.js?revision=7.1.3.2-5-1625248516"></script>
<script type="text/javascript" src="//st2.myideasoft.com/idea/hs/56/themes/selftpl_602d7702ef274/assets/javascript/rateyo.js?revision=7.1.3.2-5-1625248516"></script>
很可能 click
处理程序在您模拟点击时尚未附加。
我要验证这一点的第一件事是:
$(function autoClicker(){
console.log("it works!");
var x = document.getElementsByClassName("variant-text")[0];
setTimeout(() => x.click(), 3000);
});
假设可行,我会找到添加点击处理程序的文件,并确保您 运行 这之后,或者只创建一个您最后加载的新 js 文件。
我认为@dave 是正确的。您正试图在元素生成之前单击该元素。 setTimeout 可能会起作用,尽管我从不喜欢使用它,因为您试图预测给定元素出现需要多长时间,这在每个用例中都不起作用。
有很多方法可以做到这一点,但 MutationObserver 和 'DOMNodeInserted' 行之有效。请注意,DOMNodeInserted 已被弃用,因此 MutationObserver 是可行的方法,尽管它可能在旧浏览器中不可用。
以下使用 DOMNodeInserted 对我有用:
function init(){
var containerParent = null, container = null, targetNode = null;
function Init () {
container = document.getElementById ("main");
targetNode = document.getElementsByClassName("variant-text")[0];
if (targetNode.addEventListener) {
targetNode.addEventListener ('DOMNodeInserted', OnNodeInserted);
}
}
function OnNodeInserted(){
document.getElementsByClassName("variant-text")[0].click()
}
};
init();
将尝试跟进使用 MutationObserver 的示例
Body onload 触发一个名为“autoClicker”的函数来单击选定的“span”元素。它提醒这意味着函数正在正常调用。我控制台记录了我检查的元素,我选择正确。在最后一步它不会出现被点击,因为如果点击发生,下面的选项将可用。
亲爱的,我不知道为什么它没有点击,我期待你的宝贵贡献。
我添加到 theme.js 文件的功能
$(function autoClicker(){
console.log("it works!");
var x = document.getElementsByClassName("variant-text")[0];
x.click();
});
我想选择第一个“变体文本”类元素,您可以在 here
中找到这是sneakershop网站,我想自动选择颜色,因为每个产品已经有一个颜色选项并且它加载XML服务,我们无法更改它它会在特定时间刷新。
如有帮助,不胜感激。
我认为问题是您先加载 theme.js
<script type="text/javascript" src="//st2.myideasoft.com/idea/hs/56/themes/selftpl_602d7702ef274/assets/javascript/theme.js?revision=7.1.3.2-5-1625248516"></script>
<script type="text/javascript" src="//st2.myideasoft.com/idea/hs/56/themes/selftpl_602d7702ef274/assets/javascript/navigation-menu.js?revision=7.1.3.2-5-1625248516"></script>
<script type="text/javascript" src="//st3.myideasoft.com/idea/hs/56/themes/selftpl_602d7702ef274/assets/javascript/lazyload.min.js?revision=7.1.3.2-5-1625248516"></script>
<script type="text/javascript" src="//st3.myideasoft.com/idea/hs/56/themes/selftpl_602d7702ef274/assets/javascript/jquery.elevatezoom.js?revision=7.1.3.2-5-1625248516"></script>
<script type="text/javascript" src="//st1.myideasoft.com/idea/hs/56/themes/selftpl_602d7702ef274/assets/javascript/product.js?revision=7.1.3.2-5-1625248516"></script>
<script type="text/javascript" src="//st2.myideasoft.com/idea/hs/56/themes/selftpl_602d7702ef274/assets/javascript/rateyo.js?revision=7.1.3.2-5-1625248516"></script>
很可能 click
处理程序在您模拟点击时尚未附加。
我要验证这一点的第一件事是:
$(function autoClicker(){
console.log("it works!");
var x = document.getElementsByClassName("variant-text")[0];
setTimeout(() => x.click(), 3000);
});
假设可行,我会找到添加点击处理程序的文件,并确保您 运行 这之后,或者只创建一个您最后加载的新 js 文件。
我认为@dave 是正确的。您正试图在元素生成之前单击该元素。 setTimeout 可能会起作用,尽管我从不喜欢使用它,因为您试图预测给定元素出现需要多长时间,这在每个用例中都不起作用。
有很多方法可以做到这一点,但 MutationObserver 和 'DOMNodeInserted' 行之有效。请注意,DOMNodeInserted 已被弃用,因此 MutationObserver 是可行的方法,尽管它可能在旧浏览器中不可用。
以下使用 DOMNodeInserted 对我有用:
function init(){
var containerParent = null, container = null, targetNode = null;
function Init () {
container = document.getElementById ("main");
targetNode = document.getElementsByClassName("variant-text")[0];
if (targetNode.addEventListener) {
targetNode.addEventListener ('DOMNodeInserted', OnNodeInserted);
}
}
function OnNodeInserted(){
document.getElementsByClassName("variant-text")[0].click()
}
};
init();
将尝试跟进使用 MutationObserver 的示例