当前位置: 首页 > 面试题库 >

在Chrome扩展程序中使用页面的有角JS

颛孙航
2023-03-14
问题内容

我有一个HTML页面,其中有一些用Angular配置的DOM。现在,我正在构建一个chrome扩展程序来修改文本框中的值。element.value= newValue由于文本框是使用Angular设计的,因此无法使用。阅读一些资源后,我知道需要对元素的范围进行更改。我尝试在扩展程序中执行此操作。

var eleScope = window.angular.element(document.querySelector('.textbox')).scope();
eleScope.$apply(function() {
  eleScope.item.request.box = newValue;
});

这似乎无法正常工作。当我更深入地研究问题时,我发现窗口范围内的角度没有得到正确的范围。

我还尝试从扩展名中注入angular.js并angular.element直接使用它似乎也无法解决问题。

我错过了什么吗?感谢您的答复。


问题答案:

嗯。实际上,您应该只可以使用原始Javascript或JQuery更改值,并且不需要更新范围,因为它是双向绑定,即。更新视图会更新模型,反之亦然。

模型不更新的唯一原因是观察者仅在诸如“单击”或“输入”之类的特定事件时才更新模型。

因此,此处的解决方案是手动触发这些事件。这可以通过以下方式完成:

// the selector used is based on your example.
var elementTOUpdate = $('.textbox');
input.val('new-value');
input.trigger('input');
最后一条语句将为“输入”事件触发元素上的所有处理程序(这将触发角度观察器)并更新范围。有关触发功能的更多信息: http
//api.jquery.com/trigger/


 类似资料:
  • 问题内容: 我正在尝试在扩展弹出窗口中使用Google开发人员AngularJS库,但出现错误。 错误:在k(chrome-extension:// jambnlbfljcfpomlclcgphfmkjfiphkb / lib / lib)的功能(未知源)处,Jb(chrome- extension://jambnlbfljcfpomlclcgphfmkjfiphkb/lib/angular.js

  • 问题内容: 后来的AngularJS(1.3 beta 19)使用。铬萃取中禁止这样做。 如何在 不允许评估的情况下 解决问题? 错误信息: 拒绝将字符串评估为JavaScript,因为在以下内容安全策略指令:“ script-src’self’chrome-extension- resource:”中不允许使用’unsafe-eval’作为脚本源。 堆栈跟踪: 更新:请参阅https://doc

  • 问题内容: 我想创建一个Google Chrome扩展程序。具体来说,我想制作一个打包的应用程序,而不是一个托管的应用程序。我认为这限制了我使用JavaScript(和HTML / CSS)是否正确? 我的问题是我需要做一些复杂的数学运算(奇异值分解,因子分析),并且我不想在javascript中为此编写算法。Python已经有了我需要的功能的库(SciPy),但是我找不到任何可以使用python

  • 问题内容: 我的Chrome扩展程序有小问题。 我只想从另一台服务器获取JSON数组。但是清单2不允许我这样做。我尝试指定,但是JSON数组存储在没有SSL证书的服务器上。 那么,不使用清单1怎么办? 问题答案: 该CSP不能引起你所描述的问题。您很有可能使用的是JSONP而不是纯JSON。JSONP在Chrome中不起作用,因为JSONP通过在文档中插入标签而起作用,该标签的属性设置为Web服务

  • 问题内容: 我有一个Chrome扩展程序。我需要从当前页面的HTML源进行分析。我在这里找到了各种带有背景页面和内容脚本的解决方案,但没有一个对我有帮助。这是我到目前为止所拥有的: manifest.json: background.html: content.js: 警报始终警报未定义。即使我在content.js文件中将回调函数更改为: 结果还是一样。我究竟做错了什么?也许我走错路了。我真正需

  • Puppeteer 可以用来测试 Chrome 扩展 注意 Chrome / Chromium 扩展当前只能在非无头模式下使用。 下面的代码用来处理扩展的 background page,该扩展的代码在 ./my-extension: const puppeteer = require('puppeteer'); (async () => { const pathToExtension =