Instagram đang sử dụng phương pháp linkState
từ ReactLink:
http://facebook.github.io/react/docs/two-way-binding-helpers.html
Các liên kết trang đăng nhập vào một bundles/Login.js
có chứa mã nén như thế này:
o.createElement("input", {
className:"lfFieldInput",
type:"text",
name:"username",
maxLength:30,
autoCapitalize:!1,
autoCorrect:!1,
valueLink:this.linkState("username")
}))
Nếu bạn nhìn vào các tài liệu cho ReactLink, điều này có nghĩa là giá trị trường đầu vào chỉ được gửi trở lại trạng thái khi sự kiện thay đổi kích hoạt trên các trường nhập. Tuy nhiên, nó không đơn giản như việc kích hoạt sự kiện thay đổi trên nút đang được đề cập đến - tôi nghĩ do cách mà React bình thường hóa các sự kiện trình duyệt. Các Phản ứng tài liệu đặc biệt nói rằng onChange trong Phản ứng không phải là chính xác giống như onChange trong trình duyệt vì nhiều lý do:
http://facebook.github.io/react/docs/dom-differences.html
May mắn thay trong trường hợp bạn đang sử dụng Instagram Phản ứng với Addons bao gồm trong đó cung cấp cho bạn truy cập vào Phản ứng TestUtils, vì vậy bạn có thể làm:
var frm = window.frames[1].document.forms[0];
var fReact = window.frames[1].React;
fReact.addons.TestUtils.Simulate.change(frm.elements[0], {target: {value: 'qacitester' }});
fReact.addons.TestUtils.Simulate.change(frm.elements[1], {target: {value: 'qatester' }});
frm.elements[2].click();
Nhiều tài liệu ở đây:
http://facebook.github.io/react/docs/test-utils.html
Lưu ý rằng vì biểu mẫu đăng nhập nằm trong khung nội tuyến, bạn phải sử dụng thể hiện Phản hồi từ iframe đó nếu không TestUtils sẽ không thể tìm thấy các nút chính xác.
Điều này sẽ chỉ hoạt động trong các trường hợp trong đó React Addons được đưa vào trang. Việc xây dựng React bình thường không phải Addons sẽ yêu cầu một giải pháp khác. Tuy nhiên, nếu bạn đang nói cụ thể về ReactLink thì đó là một addon, do đó, nó không phải là một vấn đề.
Như tôi đã nhận xét về câu trả lời khác, tôi đã sử dụng jquery.autotype mà thực tế bắn tất cả các các sự kiện cần thiết và cố gắng mô phỏng hành vi của người dùng gõ các chữ cái nhưng tôi vẫn không thể làm cho nó hoạt động. Tôi cần giải quyết vấn đề này trong bối cảnh JS vì tôi đang tự động hóa trình bao bọc chrome của bên thứ ba mà tôi chỉ có thể kiểm soát thông qua mã JS. – huseyint
@huseyint để có vẻ như biểu mẫu nằm trong iFrame. Tôi đã cập nhật mã của mình bằng một hack rất hack mà tôi đã có thể gửi biểu mẫu thành công; nó có lẽ sẽ không hoàn thành những gì bạn muốn làm programatically, nhưng đó là một sự khởi đầu :) –
lol, nhờ nỗ lực nhưng tôi đang tìm kiếm một giải pháp JS thuần túy :) – huseyint