只使用javascript和元素点击angularjs按钮
click angularjs button with javascript and element only
我正在开发一个浏览器扩展,可以自动单击页面上的按钮。这些代码可以在除了angularjs之外的所有站点上运行。
下面的代码是我试图点击一个angularjs按钮,并让它注册点击,但它不工作。
//applyButton is the button element.
if(angular) {
var e = angular.element(applyButton);
e.trigger('click');
e.scope().$apply();
} else {
applyButton.click();
}
下面是applyButton没有注册"click"的angular html代码
<input value="Apply" class="apply button gift-card-apply" data-ng-click="!orderSubmitErrors.giftCard.sectionHasErrors && applyGiftCard($event)" client-validation="onSubmit,giftCard,validateSubsection" type="button">
如果我只能访问文档,是否有最佳实践来单击按钮并从javascript更改angularjs的输入字段。元素?
似乎您需要将元素包装在$timeout
中以调用元素上的.click
。观察下面的简化示例…
<div ng-app="app" ng-controller="ctrl">
<button id="btn" ng-click="click()">click</button>
</div>
var app = angular.module('app', []).controller('ctrl', function($scope, $timeout) {
$scope.click = function() {
console.log('click');
}
$timeout(function() {
angular.element(document.getElementById('btn')).trigger('click')
});
//does not work
angular.element(document.getElementById('btn')).trigger('click')
});
这样,您将不需要调用e.scope().$apply();
—$timeout
将在必要时调用循环。另外,虽然你没有在你的例子中指定,但.trigger()
需要jQuery,并且没有被纳入AngularJS的jqLite,这是毫无价值的。
JSFiddle Link - demo
相关文章:
- 点击Angularjs中的按钮上传文件
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 如何使用AngularJS显示按钮或锚标记值
- 如何为AngularJS制作智能表中第一页和最后一页的跳过按钮
- 使用AngularJS停用引导导航栏按钮
- 使用Javascript或AngularJS控制或禁用浏览器返回按钮
- jquery fancybox+angularJS:fancybox按钮动作问题
- 如何在angularjs中点击按钮重置模型
- AngularJS中没有选择多个单选按钮
- 在AngularJS中向控制器发送多个随机单选按钮值
- AngularJS按钮文本不起作用
- 打开带有 angularjs 按钮的页面
- AngularJs按钮失去作用域
- Angularjs按钮禁用无法正常工作
- AngularJS按钮点击不起作用
- 只使用javascript和元素点击angularjs按钮
- AngularJS按钮加载状态不起作用
- 点击[angularjs]按钮更改收音机型号
- AngularJS按钮点击不触发功能
- 在动态AngularJS按钮上添加Google事件跟踪代码