javascript - 通过innerHTML查找元素以从注入的javascript调用角度ng-click
问题描述
我正在尝试从注入脚本的网页上的特定 a-tag调用ng-click 。
如何从我的页面中找到确切的 a-tag?我知道我是否有一个可以写的类名($('a.classname')),但是有没有办法找到包含 innerHTML Apple的标签?
如果没有,是否可以调用 ng-click,因为它是页面上的第 10 个 a-tag?作为[10]?
页面标签:
<a ng-click="myFunction()">Apple</a>
注入脚本:
angular.element($('a')).scope().$apply(function() {
angular.element($('a')).scope().myFunction();
});
解决方案
如果您尝试在外部执行此操作,例如在扩展程序中或从控制台,您可以在目标元素上触发点击事件。
您可以使用选择器eq()
的索引<a>
或使用:contains
选择器,或者更精细地测试文本使用filter()
angular
.module('app', [])
.controller('MainCtrl', ($scope) => {
$scope.myFunc = (val) => {
console.log('Clicked value = ', val)
};
});
// from outside angular app
setTimeout(() => {
// by index
$('a').eq(3).click()
// or by text contains
$('a:contains(Apple)').click();
// using filter()
$('a').filter(function() {
return this.textContent.trim() === 'Apple';
}).click();
}, 500)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.js"></script>
<div ng-app="app" ng-controller="MainCtrl">
<a href ng-click="myFunc(1)">1</a>
<a href ng-click="myFunc(2)">2</a>
<a href ng-click="myFunc(3)">3</a>
<a href ng-click="myFunc(4)">Apple</a>
</div>
推荐阅读
- javascript - React - useState 钩子访问状态
- c - 如何读取 IIS 模块中的请求发布文件?
- spring-boot - 将 Spring Boot 1.5.10 升级到 2.1.11
- git - 如何将重复的存储库作为来自其他组织的原始存储库的分支
- python-3.x - 当我点击运行按钮时消息是 TypeError: Student() 没有参数
- javascript - 检查对象数组中是否存在值的简单方法?
- html - 使用 CSS 在按钮单击时将元素置于最前面
- javascript - 高阶函数(如 .map())如何在 JavaScript 内部工作?
- node.js - NodeJS 异步函数来创建页面加载器
- django - 带有url参数的Django unquote()