重要提示:我已经完全改写/编辑了我原来的问题,所以请不要认为第一个答案是无关紧要的。
情况如下:有这个出版物数据库的网页,用户选择不同的过滤器以搜索满足特定条件的某些文章。在某些情况下,例如在选择人群或特定人员时,过滤是从下拉列表中实现的。当用户选择一个组(从“组”过滤器中)时,相应的人员姓名列表将出现在“人员”选择下拉列表过滤器中。此外,当“组”下拉列表中的值更改时,页面会重新加载“人员”过滤器的新下拉列表。我的目标是为“组”过滤器中的每个值检索并保存“人员”过滤器的内容。我想通过在控制台窗口中使用 Javascript 代码来做到这一点。但是,我不想手动更改“组”的值
这是我的问题:考虑到我的方法并不完全疯狂,这就是我在 Safari 控制台上尝试做的事情(如果有其他方法,请告诉我):
// Since the jQuery is not loaded in the resources I call it by this:
var script = document.createElement('script');
script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(script);
// I locate the 'Group' Select List and I store the values of its options by this:
$(document).ready(function(){
//Cycle through all the groups
var abtOptValues = new Array();
$("[name='abt']>option.[value!='-1']").each(function(l){
abtOptValues[l] = $(this).attr("value");
});
// Now, with the values from the 'Group' Select List in an array I want to cycle through
// each one of them and get the respected values of the 'People' Select List. So I try this:
for (var abtOptValue in abtOptValues)
{
$("[name='abt']").val(abtOptValues[abtOptValue]); //set the option in
// the 'Group' List
var persOptValue = new Array();
$("[name='pers']>option.[value!='-1']").each(function(i){
persOptValue[i] = $(this).attr("value");
});
console.log(persOptValue);
}
});
但是,正如 Mike 在下面准确评论的那样,这不是一个正确的方法,当控制台中的 javascript 运行时,控制 Select Lists 内容的 javascript 将不会运行。只有在控制台的脚本完成后,控件的脚本才会选择为“组”列表选择的当前值,并将与“人员”列表中的该选项内容对应的打印次数与“组”中的选项数相同。组列表。
如果希望上述内容有意义,我的问题是,作为浏览器中页面的查看者,为了实现这种自动化,要遵循什么策略,而无需访问页面资源?
如果我试图用图表描述我需要采取的行动的顺序,那就是:
页面加载-> jQuery 库加载-> 'Group' 列表选项收集-> 设置'Group' 列表中的第一个选项-> 页面重新加载-> jQuery 库加载-> 'People' 列表选项(对应到第一个'Group'选项)收集->设置'Group List中的第二个选项->加载jQuery库->
收集'People'列表的选项(对应于第二个'Group'选项)->设置第三个选项在“组”列表等...
先感谢您。
PS:请提及(尽管您已经推测)我在 html 和 jQuery 领域非常新手。
编辑:在与朋友讨论这个话题后,他向我解释了一些事情,据我所知,我将在这里尝试重新组合,但如果你愿意,请说明你会这样做的方式。
所以首先,一个重要的参数是我无法访问服务器和页面源,所以我要求的是“破解”已经到达我的浏览器的内容,以便检索我需要的数据。这是可能的,只要我不需要刷新页面。And a refresh takes place when, for example a new value in a Select List is selected and the page automatically refreshes to update the content of the children drop Lists. 其次,我需要自动化这个过程,并且能够在控制台中输入代码,按回车键一次,让我上面描述的过程继续直到完成。
这位朋友建议这几乎是不可能的,除非外部应用程序会在控制台中扮演启动和停止 javascript 的管理角色,注意页面何时刷新并控制彼此之间的通信。他强调,通常的正常方式是访问服务器,我可以要求在浏览器中只返回我想要的数据。我期待着您的回答。