我有一个客户谁是一个网站的成员。他每次都必须填写一份表格,而这个表格的确经常出现。这就是为什么他要我为他开发一个应用程序来自动完成这个过程。当我使用webBrowser控件来操作它时,我可以登录,但是之后有一些包含数据绑定的字段。这些字段是我需要操作的字段。当我将数据推送到必要的字段时,它不起作用,因为在html标记中,没有值属性,而是具有数据绑定。所以我的问题是如何操纵和推送数据到这些领域?如何操作数据绑定,knockoutJs
非常感谢您提前提供的所有帮助。
我有一个客户谁是一个网站的成员。他每次都必须填写一份表格,而这个表格的确经常出现。这就是为什么他要我为他开发一个应用程序来自动完成这个过程。当我使用webBrowser控件来操作它时,我可以登录,但是之后有一些包含数据绑定的字段。这些字段是我需要操作的字段。当我将数据推送到必要的字段时,它不起作用,因为在html标记中,没有值属性,而是具有数据绑定。所以我的问题是如何操纵和推送数据到这些领域?如何操作数据绑定,knockoutJs
非常感谢您提前提供的所有帮助。
Knockout使用数据绑定来侦听输入中的更改并更新基础模型。例如,value
绑定侦听change
事件并将新值写入数据绑定observable
。
如果通过代码更新value
属性,则不会触发change
事件。你会在看到 UI中的新值,但是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>
感谢分享的人,不知何故,我无法得到适当的时间来检查它,但尽快我会尝试这个,然后让你知道。再次感谢。 –
你阅读文件? http://knockoutjs.com/documentation/attr-binding.html – PMerlet
是的,我已经检查过它并获得了数据绑定的逻辑。它像angularJs ng模型,但我不明白的东西是操纵它。如果你有任何想法,我将不胜感激,如果你可以与我分享:) –
是否有任何方法添加到HTML DOM自定义脚本?通过web浏览器控制。如果有可能,也许可以将脚本推入html以便能够操纵? –