-1

重要提示:我已经完全改写/编辑了我原来的问题,所以请不要认为第一个答案是无关紧要的。

情况如下:有这个出版物数据库的网页,用户选择不同的过滤器以搜索满足特定条件的某些文章。在某些情况下,例如在选择人群或特定人员时,过滤是从下拉列表中实现的。当用户选择一个组(从“组”过滤器中)时,相应的人员姓名列表将出现在“人员”选择下拉列表过滤器中。此外,当“组”下拉列表中的值更改时,页面会重新加载“人员”过滤器的新下拉列表。我的目标是为“组”过滤器中的每个值检索并保存“人员”过滤器的内容。我想通过在控制台窗口中使用 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 的管理角色,注意页面何时刷新并控制彼此之间的通信。他强调,通常的正常方式是访问服务器,我可以要求在浏览器中只返回我想要的数据。我期待着您的回答。

4

1 回答 1

-1

如果您希望警报只显示一次,请将您的for循环从

for (HLValue in HLValues)
{
   alert(LLValues);
   // **Here is my problem**
}

var vals = []; // Create a new empty array

for (HLValue in HLValues)
{
    vals.push(HLValue); // Add the item value to your array
}

var joinedVals = vals.join("\n"); // Join the item values with a newline between them

alert(joinedVals); // Alert just once with the joined item values

要在每次页面刷新时包含 JQuery,请在您的 中添加以下行<head>

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>

这会直接从他们的站点加载 JQuery,而无需下载它并在您的机器上引用它。

于 2013-11-05T00:22:54.207 回答