我的客户是网站的成员。他每次都必须填写一份表格。这就是为什么他要我为他开发一个应用程序来自动完成这个过程。当我使用webBrowser控件来操作它时,我能够登录,但之后会有包含数据绑定的字段。这些字段是我需要操作的字段。当我将数据推送到必要的字段时,它不起作用,因为在html标记中,没有值属性,而是具有数据绑定。所以我的问题是我如何操纵和推送数据到这些领域?
非常感谢你提前帮助。
答案 0 :(得分:0)
Knockout使用数据绑定来监听输入中的更改并更新基础模型。例如,value
绑定侦听change
个事件,并将新值写入数据绑定observable
。
如果您通过代码更新value
属性,则change
事件不会被触发。您将在用户界面中看到新值,但javascript模型无法更新。
您可以通过明确触发更改来解决此问题。这是一个例子:
input
:您会看到显示淘汰赛更新的console.log
change
事件。您现在会注意到淘汰赛现在会更新模型。当然,您可以将两个点击侦听器合并为一个功能。我已将它们分开以获得重点。
// Hidden knockout code:
(function() {
var label = ko.observable("test");
label.subscribe(console.log.bind(console));
ko.applyBindings({ label: label });
}());
// Your code
var buttons = document.querySelectorAll("button");
var input = document.querySelector("input");
buttons[0].addEventListener("click", function() {
input.value = "generated value";
});
buttons[1].addEventListener("click", function() {
// http://stackoverflow.com/a/2856602/3297291
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);
input.dispatchEvent(evt);
});

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<input type="text" data-bind="value: label">
<button>inject value from outside</button>
<button>let knockout know something changed</button>
&#13;