我使用在线外汇交易网站。我使用此website(在交易网站上向下滚动以查看资产图表)。我用它来交易和查看外汇图。 当我在浏览器(firefox)中打开页面时,我想使用Greasemonkey脚本自动选择或“预设”页面,使用我交易的外汇资产,以便页面加载我使用的图表。例如,我想自动选择“AUD / USD”。
我尝试过使用JQuery / JS选择/点击的不同方法。如果有人可以提供帮助,我将非常感激。
我尝试了以下各项无济于事:
$("#assetPlatformSelect_0_chzn a span").text("AUD/USD");
$(".chzn-search input").val("AUD/USD");
// $(".chzn-search input").focus(); //tried with and without focus
var p = jQuery.Event('keydown');
p.which = 13;
p.keyCode = 13;
$(".chzn-search input").trigger(p);
$("#assetPlatformSelect_0 optgroup[label='currencies'] option").each(function()
{
if($(this).text() == "AUD/USD")
{
$(this).attr('selected', true);
}
else
{
$(this).attr('selected', false);
}
});
var clickNode = "";
var val2 = "assetPlatformSelect_0_chzn_o_";
$("li[id^=" + val2 + "]").each(function()
{
if($(this).text() == "AUD/USD")
{
//tried each and combination of these....
clickOnFollowButton($(this));
clickNode = $(this).attr('id');
$(this).click();
$(this).addClass('result-selected');
$(this).live('click', function () {
$(this).click();
});
}
else
$(this).removeClass('result-selected');
});
function clickOnFollowButton (jNode) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
jNode[0].dispatchEvent (clickEvent);
}
waitForKeyElements ("#assetPlatformSelect_0_chzn a", triggerMostButtons);
function triggerMostButtons (jNode) {
triggerMouseEvent (jNode[0], "mouseover");
triggerMouseEvent (jNode[0], "mousedown");
triggerMouseEvent (jNode[0], "click");
triggerMouseEvent (jNode[0], "mouseup");
//clickNode is the Li item to select/click
console.log($(clickNode));
triggerMostButtons2 (clickNode);
}
function triggerMostButtons2 (jNode) {
triggerMouseEvent (jNode[0], "mouseover");
triggerMouseEvent (jNode[0], "mousedown");
triggerMouseEvent (jNode[0], "click");
triggerMouseEvent (jNode[0], "mouseup");
}
答案 0 :(得分:0)
经过数小时的测试和测试,不同的选项没有任何效果。我终于回去并使用chrome检查来检查每个元素,然后我发现选项列表的父元素有一个更改eventListener。 我不知道为什么但是当greasemonkey / js更新列表时,不会触发更改eventlistener。所以现在更新列表对象后,我在greasemonkey中触发了change事件,解决了这个问题。请参阅下面的代码。
$("#assetPlatformSelect_0_chzn a span").text("AUD/USD");
//trigger the change eventlistener on the <select> object
fireChangeEvent("assetPlatformSelect_0");
function fireChangeEvent(elmId)
{
var element = document.getElementById(elmId);
if ('fireEvent' in element)
element.fireEvent("onchange");
else {
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);
element.dispatchEvent(evt);
}
}