我正在构建Chrome扩展程序.我试图让我的应用程序与扩展程序中的每个页面以及用户在浏览器中查看的页面进行通信.我需要从扩展程序访问dom然后更新它.
manifest.json
popup.html
popup.js
background.js
content.js
Run Code Online (Sandbox Code Playgroud)
以及用户正在查看的当前页面.
我的目标是在页面加载时修改dom并在用户看到之前向用户显示新版本的页面.在popup.js用户中允许在弹出窗口中输入关键字.关键字被保存到localStorage他们查看网页时,通过使关键字的父div隐藏(如果在他们正在查看的任何页面上找到关键字),将关键字从其视图中删除.
我需要帮助让每个页面进行通信,我认为我在popup.js中隐藏父div的方式不起作用.我对如何从前面对dom执行操作感到困惑.
将dom发送到background.js在页面上查找关键字并将其父div更改为hidden.将dom推回查看页面.
我认为这句话是说如果我匹配任何网址然后运行我的应用程序,但我不确定.
"matches": ["*://*/*"],
Run Code Online (Sandbox Code Playgroud)
我的manifest.json
{
"name": "Wuno Zensoring",
"version" : "1.0",
"permissions": [
"activeTab",
"tabs",
"storage"
],
"description": "This extension will search the document file for keywords and hide their parent div.",
"icons": {
"19": "icon19.png",
"38": "icon38.png",
"48": "icon48.png",
"128": "icon128.png"
},
"background": {
"persistent": false,
"scripts": ["jquery-1.11.3.min.js","background.js"]
},
"content_scripts": [{
"matches": ["*://*/*"],
"js": ["content.js"],
"run_at": "document_end",
"all_frames": true
}],
"web_accessible_resources": [
"popup.js", "content.js"
], …Run Code Online (Sandbox Code Playgroud) 我在视图中有三个按钮,在页面加载时我显示第一个按钮内容.单击按钮后,该按钮将变为活动状态,但在页面加载时,初始按钮不会设置为活动状态.为了显示第一个按钮激活,我将其添加到div:
[ngClass]="'active'"
Run Code Online (Sandbox Code Playgroud)
现在的问题是,当单击另一个按钮时,第一个按钮保持活动类.我正在评估基于字符串显示的数据.点击每个按钮后,字符串会发生变化.
如何添加条件来检查当前字符串?因此,如果字符串与显示的当前数据匹配,那么将活动类添加到此按钮?
所以这就是我要找的东西:
[ngClass]="'active'" if "myString == ThisIsActiveString;
Run Code Online (Sandbox Code Playgroud)
这是我当前的按钮,但是当我用这种语法添加它时,不会添加该类:
<button [class.active]="shown == EQUIFAX" (click)="shown = 'EQUIFAX'" type="button" id="equifax" class="btn btn-secondary">Equifax Report </button>
Run Code Online (Sandbox Code Playgroud)
要清楚,字符串在页面加载时默认为"EQUIFAX".
这基于答案:
<button [ngClass]="'active' : shown == 'EQUIFAX'" (click)="shown = 'EQUIFAX'" type="button" id="equifax" class="btn btn-secondary">Equifax Report </button>
Run Code Online (Sandbox Code Playgroud) javascript typescript angular2-directives angular2-template angular
我正在遍历我的 API 响应并将其添加到这样的 html 模板中,
// Following sends same information as above to the browser as html
t, err := template.New("TopMovies").Parse(`
{{define "TopMovies"}}
<html>
<ul>
{{$ImgUrl := "http://image.tmdb.org/t/p/w185" }}
{{range $movies := .Results}}
<li>{{$ImgUrl}}{{$movies.PosterPath}}</li>
<li>{{$movies.Adult}}</li>
<li>{{$movies.Overview}}</li>
<li>{{$movies.ReleaseDate}}</li>
<li>{{$movies.GenreIds}}</li>
<li>{{$movies.Id}}</li>
<li>{{$movies.OriginalTitle}}</li>
<li>{{$movies.OriginalLanguage}}</li>
<li>{{$movies.Title}}</li>
<li>{{$ImgUrl}}{{$movies.BackdropPath}}</li>
<li>{{$movies.Popularity}}</li>
<li>{{$movies.VoteCount}}</li>
<li>{{$movies.Video}}</li>
<li>{{$movies.VoteAverage}}</li>
{{end}}
</ul>
</html>
{{end}}
`)
err = t.ExecuteTemplate(w, "T", p) // This writes the client response
}
Run Code Online (Sandbox Code Playgroud)
我的印象是我应该能够像这样在我的 html 模板中调用它,
{{.TopMovies}}
Run Code Online (Sandbox Code Playgroud)
但是当我运行应用程序时,数据没有出现在我调用它的 html 页面中。我在这里缺少什么?
我创建了一个这样的结构,
//A Page structure
type Page struct {
Title …Run Code Online (Sandbox Code Playgroud) 编辑当我点击添加到购物车时,这是终端的输出
[22/Mar/2016 07:07:44] "GET /store/add/7 HTTP/1.1" 302 0
[22/Mar/2016 07:07:44] "GET /store/ HTTP/1.1" 200 4888
Run Code Online (Sandbox Code Playgroud)
我有两个功能,一个是将商品添加到购物车,另一个是删除。
我在想问题是我的 URL 请求没有正确形成。所以我很感激比我更有经验的人向我解释预期的 URL 应该是什么。
我正在像这样创建我的 URL,
url(r'^add/(\d+)', views.add_to_cart, name='add_to_cart'),
url(r'^remove/(\d+)', views.remove_from_cart, name='remove_from_cart'),
url(r'^cart/', views.cart, name='cart'),
Run Code Online (Sandbox Code Playgroud)
将商品添加到购物车的链接位于 base.html 文件中,如下所示,
{% if request.user.is_authenticated %}
<span class="storefront_add_to_cart">
<a href="{% url 'add_to_cart' book.id %}">[Add to Cart]</a>
</span>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
因此,当您从购物车中添加或删除项目时,它会调用相应的函数。
视图.py
def add_to_cart(request,book_id):
if request.user.is_authenticated():
try:
book = Book.objects.get(pk=book_id)
except ObjectDoesNotExist:
pass
else :
try:
cart = Cart.objects.get(user = request.user, active = True)
except ObjectDoesNotExist:
cart …Run Code Online (Sandbox Code Playgroud) 我试图让knex在我的node.js应用程序中工作.我正在关注一个教程,并在某个时候创建了一个表但无法重复该过程.我删除了表并删除了所有迁移文件夹.在这一点上,我重新开始,但在创建新的迁移然后运行后,knex migrate:latest我得到一个错误,说迁移目录已损坏,因为我原来的迁移丢失了.
我的印象是,如果文件遗失,它应该不知道它曾经存在过.
从项目中删除迁移的正确方法是什么?
knexfile.js
development: {
client: 'pg',
connection: {
host: '127.0.0.1',
user: 'postgres',
password: 'password',
database: 'myDatabase'
},
pool: {
min: 10,
max: 20
},
migrations: {
directory: __dirname + '/db/migrations'
},
seeds: {
directory: __dirname + '/db/seeds/development'
}
Run Code Online (Sandbox Code Playgroud)
db.js
var config = require('../knexfile.js');
var env = 'development';
var knex = require('knex')(config[env]);
module.exports = knex;
console.log('Getting knex');
knex.migrate.latest([config]);
console.log('Applying migration...');
Run Code Online (Sandbox Code Playgroud)
运行此错误,
knex migrate:latest
Using environment: development
Error: The migration directory is corrupt, the following files are …Run Code Online (Sandbox Code Playgroud) 问题
在我的Angular2节点应用程序中出现此警告,而不对我的应用程序进行任何更改,
警告
资产大小限制中的警告:以下资产超出建议的大小限制(250 kB).这可能会影响Web性能.资产:bundle.js(10.3 MB)
输入点大小限制中的警告:以下入口点组合资产大小超过建议限制(250 kB).这可能会影响Web性能.入口点:app(10.3 MB)bundle.js
Webpack性能建议中的警告:您可以通过使用System.import()或require.ensure延迟加载应用程序的某些部分来限制捆绑包的大小.欲了解更多信息,请访问 https://webpack.js.org/guides/code-splitting/
背景
我关心的是问题所在.在需要解决方案之前了解它以及如何解决它.我的想法是我的设计模式有缺陷.
题
1.通过改变设计模式或架构是否可以避免这个问题?
2.如果是的话怎么办?
3.抛出此错误时,应用程序究竟是什么原因造成的?
4.此警告是否会影响应用程序在生产中,或仅在开发时Webpack用于构建项目?
背景
在页面加载时,我正在进行 http get 调用来获取一些数据。
页面上有一个表单,用于向 APi 提交新数据。响应不保存新的更新数据,但提交表单后数据存在于数据库中。
我需要在提交表单后进行第二次 api 调用来访问数据。
问题
提交表单后,如何再次进行初始 API 调用以检索当前数据,然后用它更新我的视图组件?
代码
页面加载时我在里面调用这个函数
检索数据的初始调用
ngOnInit() { this.getPaymentMethods() }
Run Code Online (Sandbox Code Playgroud)
函数定义
private getPaymentMethods() {
let params: URLSearchParams = new URLSearchParams();
params.set('api_key', this.apiKeyData);
params.set('email', this.auth.user.email);
return this.http.get(STATICS.API_BASE + STATICS.API_ALL_PAYMENT_METHODS,
{ search: params })
.map((res: Response) => res.json()).subscribe((res) => {
localStorage.setItem('payment_profiles', JSON.stringify(res.payment_profiles));
});
}
Run Code Online (Sandbox Code Playgroud)
处理初始调用的响应
解析数据对象响应
this.PaymentMethodKeys = Object.keys(this.pMethodsData);
Run Code Online (Sandbox Code Playgroud)
在视图中我显示这样的数据
<div *ngFor="let key of PaymentMethodKeys">
{{pMethodsData[key].card_no}}
{{pMethodsData[key].payment_profile_id}}
</div>
Run Code Online (Sandbox Code Playgroud)
这是提交以将新数据添加到数据库的表单
saveCreditCard(model: Payment, isValid: boolean) {
let params: URLSearchParams = new URLSearchParams(); …Run Code Online (Sandbox Code Playgroud) 我在这里找到了这样的更新
在Linux/Mac上:npm install @ angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations} @latest typescript @ latest - 保存
当我删除node_modules然后npm install我得到这个,
警告在./~/@angular/core/@angular/core.es5.js 5889:15-36严重依赖:依赖的请求是一个表达式
也许这会帮助别人帮助我.这似乎是ES5的一个问题?
控制台中的当前错误.
背景
我的项目工作正常,直到我升级到Angular 4昨晚.现在,当我点击一个链接而不是加载模块(我是延迟加载)时,它告诉我它找不到模块.
Eror
ZoneAwareError {__zone_symbol__error:错误:未捕获(在承诺中):错误:找不到模块'./benefits/benefits.module'.错误:不能......}
有没有其他人分享这种情况或有任何线索如何解决这个问题,甚至做什么来解决它?我以为没有突破性的变化Angular 4?
代码示例
的package.json
{
"name": "my-web-application",
"version": "0.0.0",
"license": "MIT",
"angular-cli": {},
"scripts": {
"ng": "ng",
"start": "ng serve",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "^4.0.0",
"@angular/common": "^4.0.0",
"@angular/compiler": "^4.0.0",
"@angular/compiler-cli": "^4.0.0",
"@angular/core": "^4.0.0",
"@angular/forms": "^4.0.0",
"@angular/http": "^4.0.0",
"@angular/platform-browser": …Run Code Online (Sandbox Code Playgroud) 背景
整个互联网上人们都在问为什么他们不能在 React Native 中发出 http 请求。答案通常是因为他们必须更新info.plist. 对我来说,这曾经是一个问题。我更新了我的设置,并http在fetch请求中工作。
从那以后我更新了我的服务器并SSL在我的节点 api 端点上有了。当我在生产服务器上的邮递员中到达端点时,没有任何问题。但是,当我删除添加到info.plist允许请求的设置,然后尝试运行我的应用程序时,在运行访问 fetch 调用中http使用的端点的代码时,我再次收到错误。https
代码示例
我更新了我的代码以发出如下请求:
fetch('https://api.email.com/v1/clients/update', {
...
}
Run Code Online (Sandbox Code Playgroud)
当像这样使用 http 发出请求时:
fetch('http://api.email.com/v1/clients/update', {
...
}
Run Code Online (Sandbox Code Playgroud)
我在info.plist
<key>api.wuno.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>wuno.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
Run Code Online (Sandbox Code Playgroud)
但现在我再次收到错误:
网络请求失败
问题
现在我已经有了SSL终点API。当被邮递员击中时它正在工作。我从 中删除了例外情况info.plist。我需要采取哪些步骤才能使用https我fetch的react native应用程序?
angular ×4
javascript ×3
django ×1
fetch ×1
go ×1
homebrew ×1
html ×1
info.plist ×1
jquery ×1
json ×1
knex.js ×1
node.js ×1
python ×1
react-native ×1
typescript ×1
vim ×1
webpack ×1