内容脚本自动填充Angular创建的用户密码表单

时间:2017-03-05 17:52:42

标签: javascript jquery angularjs forms google-chrome-extension

我创建了一个内容脚本扩展,以自动填充网页上的用户和密码字段。它可以正常形式工作,如下 -

<input name="userId" class="form-field" id="userId" placeholder="Username" autocomplete="off" tabindex="1" type="text">
<input name="password" class="form-field" id="password" placeholder="Password" autocomplete="off" tabindex="2" type="password">
<input name="signIn" class="btnBlue" id="signIn" value="Sign In" tabindex="4" onclick="checkIECompat()" type="button">

然而,当谈到Angular生成的形式时,无论我尝试使用那些ng-xxxxxx类有多难,它都不起作用。

<input type="text" class="form-control text-center modal-header ng-valid-maxlength ng-touched ng-dirty ng-valid-parse ng-invalid ng-invalid-required" name="idCard" placeholder="User Name" maxlength="20" autocomplete="off" ng-model="request.userName" required="">
<input type="password" class="form-control text-center ng-dirty ng-valid-parse ng-touched ng-invalid ng-invalid-required" name="password" placeholder="Password" aria-describedby="" autocomplete="off" ng-model="request.password" style="margin-top:15px" required="">
<button type="submit" class="btn btn-blue btn_login" value="Log In" ng-click=" login('/payment')" ng-disabled="loginForm.$invalid" disabled="disabled">เข้าสู่ระบบ <span class="glyphicon glyphicon-log-in" style="font-size:14px" aria-hidden="true"></span></button>

以上是首次加载页面时的代码。我手动键入表单并检查所有有效性并启用提交按钮后的代码。然后,我使用我的程序来更改这些类和其他细节,使它们相同(除了它的顺序)。我甚至通过删除disabled属性强制启用该按钮,但它没有帮助。可以单击该按钮但没有任何反应。

我的问题是“是否有可能实现这一目标?”。 Angular是否存在阻止内容脚本成功运行的限制?或者只是编码问题,我无法使其发挥作用。

另一个问题是我没有Angular代码。它属于我想使用我的扩展程序的网站。

1 个答案:

答案 0 :(得分:1)

在@wOxxOm的指导下,在设置输入值后添加以下行来触发事件(更新Angular模型),我的问题就解决了。

document.getElementsByName("idCard").item(0).value = 'XXXXX';
document.getElementsByName("idCard").item(0).dispatchEvent(new Event("input"));