0

我正在编写一个与 HTML DOM 交互的 VB 应用程序。

如果我去这个页面:

https://edit.yahoo.com/registration

然后尝试从选择的默认选项将右上角的“我更喜欢内容来自” SELECT 框更改为“Yahoo!亚洲”,我可以使用以下命令执行此操作:

Document.Forms.regFormBody.preferredcontent.selectedIndex = 10

它成功地改变了它。但问题是它与手动将选项更改为 Yahoo! 的行为不同。亚洲使用您的鼠标。

如果您尝试在不使用 DOM 的情况下手动执行此操作,则在更改它之后,页面会刷新。

我假设它是一个 javascript 调用或根据选择的选项刷新该页面的东西,但我尝试使用 DOM 复制该行为,但我无法弄清楚。

有人可以帮忙吗?提前致谢。

4

1 回答 1

0

您正在寻找onChange活动。当然,表单有可能被其他事件提交,也许是onBlur.

更新以下来自评论的其他问题

显然受以下行的约束:

YAHOO.util.Event.on("preferredcontent", "change", ymem_reg.switchPrefContent);

其中调用以下内容:

ymem_reg.switchPrefContent = function(e) {
    var Dom = YAHOO.util.Dom || false;
    if (Dom) {
        var oForm = Dom.get("regFormBody");
        var sToIntl = this.options[this.selectedIndex].value;
        var yregFormValidator = (typeof yregFormValidator !== "undefined") ? yregFormValidator: false;
        var fieldsWithDefaults = Dom.get(["firstname", "secondname", "dd", "yyyy"]);
        var clearVal = function(el) {
            if (el !== null && ymem_reg.fieldHasDefaultVal(el)) {
                el.value = "";
            }
        }
        if (oForm !== null && sToIntl !== "") {
            if (yregFormValidator) {
                yregFormValidator.disable();
            }
            var oInput = document.createElement("input");
            oInput.setAttribute("type", "hidden");
            oInput.setAttribute("name", "IntlSwapBtn");
            oInput.setAttribute("id", "IntlSwapBtn");
            oForm.appendChild(oInput);
            Dom.batch(fieldsWithDefaults, clearVal);
            oForm.submit();
        }
    }
}
于 2009-06-28T03:50:50.030 回答