gpt4 book ai didi

javascript - XPath 无法单击 Greasemonkey 脚本中的按钮

转载 作者:行者123 更新时间:2023-11-28 01:56:49 25 4
gpt4 key购买 nike

我想打开一个包含单词 google 的链接。它看起来像这样:

 <input class="submit" style="background: #409999; border-radius: 10px;" value="open" onclick="Open('143615', '1', 'https://www.google.de/');" type="submit">


我尝试了这个 Greasemonkey 代码:

var snapResults = document.evaluate("//input[contains(@onclick, 'test')]",document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

for (var i = snapResults.snapshotLength - 1; i >= 0; i--) {
var elm = snapResults.snapshotItem(i);
// do stuff with elm

if (elm) //open the window, which contains "test"
{
elm.singleNodeValue.click(); //there is no effect ...
alert(i+". element opend");
}
else
{
alert(i+". Not found.");
}
}

没有任何效果。我想通过 Greasemonkey 打开窗口(点击事件?)

当我使用 alert(elm.href); 时,它说它是“未定义”。但是当我在 FirePath 中尝试时,XPath 可以工作。

最佳答案

你说 XPath 有效,但是 elm.href GM 脚本中未定义。这表明<input>通过 AJAX 添加。

您的脚本需要使用AJAX-aware techniques 。像这样的东西:

// ==UserScript==
// @name _Clicking "Open" buttons
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/
waitForKeyElements ("input.submit[onclick*='open']", clickOpenBtn);

function clickOpenBtn (jNode) {
triggerMouseEvent (jNode[0], "click");
}

function triggerMouseEvent (node, eventType) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent (eventType, true, true);
node.dispatchEvent (clickEvent);
}

关于javascript - XPath 无法单击 Greasemonkey 脚本中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18982976/

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