【问题标题】:Trigger an Angular function from a content script?从内容脚本触发 Angular 函数?
【发布时间】:2015-03-18 19:43:20
【问题描述】:

我正在尝试使用内容脚本或类似内容从现有网站访问 Angular 函数。我知道我需要调用的函数,但我不熟悉 Angular 函数的范围。因此,即使我可以看到该函数,并且知道要传递给它的参数,我也无法从控制台调用它。

这里是我需要的功能...

angular.module("smartwayTraffic").controller("mapController", ["$scope", "$window", "$q", "$timeout", "$modal", "_", "constant", "geolocation", "dataService", "mapService", function(n, t, i, r, u, f, e, o, s, h) {

...

n.gotoRegion = function(t) {
    e.regionBounds.forEach(function(i) {
        i.region === t && (y(), n.map.control.fitBounds(i.bounds), v())
    })
};

....

我还需要什么才能从控制台触发此功能?

....gotoRegion("Nashville");

【问题讨论】:

  • 你到底想做什么?这听起来像是the XY Problem 的情况。究竟什么是内容脚本?究竟是什么限制了您从“内容脚本”调用 gotoRegion?
  • 您可能会发现这个问题很有用 (stackoverflow.com/questions/15527832/…)
  • 问题是我必须对这个网站进行截图...smartway.tn.gov/traffic 为菜单中的每个位置每 5 分钟一次。我只能访问 url 和浏览器。我正在更新的以前版本的软件使用 cookie 来放大这些位置,但据我所知,新站点只需要一个地理定位点,或者它将您发送到广阔的视野。当您单击链接时,将放大这些区域的站点菜单正在调用名为“gotoRegion()”的函数,其中城市名称作为参数。我对这个问题的其他解决方案持开放态度。
  • 就我所说的内容脚本而言,我希望添加某种在浏览器中执行的代码,用于处理已加载的数据。然后,我可以将它添加到现有脚本中,该脚本会截取我们已有的该站点的屏幕截图。
  • @tantangula:我不确定,但在我看来,您需要的是地图指令。使用指令,您可以以任何您喜欢的方式操作 DOM,并且可以避免编写应该尝试强制进入角度控制器范围的脚本方法。

标签: javascript angularjs angularjs-scope


【解决方案1】:

是的,您只需要使用 angular.element 来获取控制器范围内的元素:

angular.element("yourElement").scope().n.gotoRegion();

【讨论】:

  • 这确实有效,但我必须先遍历作用域层次结构,然后才能到达我需要调用的函数。所以它最终看起来像...... angular.element(".ng-scope").scope().$$childHead.gotoRegion("Memphis") 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-15
  • 2014-03-12
相关资源
最近更新 更多