从Web浏览器调用Jquery函数

时间:2016-03-16 01:10:27

标签: c# jquery

我正在尝试使用webbrowser从受密码保护的网页获取数据,该网页使用带有3个JQuery数据字段的div容器。第二个字段取决于第一个字段,第二个字段取决于第二个字段。我需要设置这3个组合框并点击提交以获取我想要抓取的数据。问题是,一旦第一个组合框发生变化,它就会调用一个填充第二个和第三个框的函数。我无法弄清楚如何调用这个函数......

这是第一个组合框的样子:

选择s [DCOM1] Selection1

我设法设置了第一个组合框,但是我遇到的最大问题是调用viewStep.onSChanged(),它应该填充第二个框,我无法使它工作。

onSChanged函数位于Jquery js中。文件

self.onsChanged = function(selectadj) {
    self.viewBasicsUpdated = true;
    log.debug('onsChanged');
    if (self.s) {
        self.adjEnabled = false;
        self.adj = null;
        self.auctionType = 'S';
        controller.ds.getadjList(self.s.id, function(response) {
            controller.applyUpdates(function() {
                self.adjList = response.data;
                // Add "Add adj" option (as first in array).
                self.adjList.unshift({
                    id : ADD_adj_ID,
                    fullName : controller.locale.getMessage('app.label.add.adj')
                });
                self.adjEnabled = true;
                self.standardEnabled = true;
                self.vixEnabled = (StringUtils.trimWS(self.s.vixFlag) === 'Y') ? true : false;
                self.offsiteEnabled = (StringUtils.trimWS(self.s.offsiteFlag) === 'Y') ? true : false;
                self.titOnlyEnabled = (StringUtils.trimWS(self.s.titOnlyFlag) === 'Y') ? true : false;
                self.salType = self.s.salType;

                self.titProcurementFlag = (StringUtils.trimWS(self.s.titProcurmentFlag) === 'Y') ? true : false;

                //Selects the adj when a new adj is added. 
                if(selectadj){
                    angular.forEach(self.adjList, function(object, index) {
                        log.debug("object.id++"+object.id);
                        if(object.id===self.newadjId){
                            self.adj=object;
                            log.debug("self.newadjId++"+object.id);
                        }
                    });
                }
            });
        });
    }else{
        controller.applyUpdates(function() {
            self.adj = null;
            self.adjEnabled = false;
            self.auctionType = 'S';
            self.standardEnabled = false;
            self.vixEnabled = false;
            self.offsiteEnabled = false;
            self.titOnlyEnabled = false;
            self.salType = null;
            self.titProcurementFlag = false;
        });`
    }
};

我试图在许多不同的选项中调用该函数,包括invokescript,发布一个与我在Fiddler看到的相同的post请求(我猜它因为cookie不同而失败)但是一切都失败了。有没有办法执行这个功能?

1 个答案:

答案 0 :(得分:0)

使用Javascript在输入控件上设置值时,DOM事件可能不会触发,具体取决于值的设置方式。

而不是尝试执行网页通常会触发的相同功能,在这种情况下self.onsChanged,在您更新的控件上触发事件。

$("#selectBox1").val("Value A");
$("#selectBox1").change();

https://api.jquery.com/change/