6

Bazı ajax'i krom uzantısında kullanmaya çalışıyorum.ajax telefonum neden Chrome uzantısında senkronize oluyor?

Varolan bir sayfaya bazı html eklemesi gereken bir içerik komut dosyasına sahibim.

JQuery.get, JQuery.load ve ng-include denedim.

Ve bunların tümü, konsolda synchronous XHR'un kullanımdan kaldırıldığını belirten bir uyarı gösteriyor (bunlar, doğaya göre eşzamanlı değil mi ???). Ve sonra sayfa bu garip davranışı gösterir, bana bazı Pusher tanımlanmadığını söyler, sonra sayfayı yeniler ve eklenmiş div'umu öldürür.

Neyin yanlış olabilir?

Örnek kod - İlk var txt'u etkinleştirirseniz, mükemmel çalışır. Bunun yerine ikinci var txt'u (yorum ekledim) etkinleştirirseniz, başarısız olur.

//this first line works perfectly 
var txt = '<div id="myNewDiv" ng-controller="myController">{{testing}}</div>'; 

//this shows the warning and a really weird behavior 
//var txt = '<div id="myNewDiv" ng-controller="myController">{{testing}}<div ng-include="' + "'myhtml.html'" + '"></div></div>'; 


$('#a-certain-div-in-the-page').after(txt) 

var app = angular.module('myApp', []) 
    .controller('myController', function($scope) { 
     $scope.testing = 'Welcome!'; 
    }); 

angular.bootstrap(document, ['myApp']); 
+0

sadece mark-up HTML ne var yoksa –

+0

bunu uyarıyı tetikler sayfanın kendisi olmadığından emin misiniz Senaryo başvuran içerir? – Xan

+0

Merhaba, @KodUniquely, evet, sadece işaretleme. Aslında hiç etiketsiz düz bir metinle bile denedim. Sonuç her zaman aynıdır. (Test amaçlı olarak, aynı HTML'yi ekleyebildim, içeriğini kodta yazarak ve $ ('# ...'). Addend) –

cevap

6

Tamam, burada olur:

1 - uzantılı domain sayfası alanında farklı, yüzden değil uzatma dosyalarından, sayfanın etki alanından şeyler yüklemeye çalıştı. (Ve kaynak bulunamadı). Bu durumda uyarı mesajı tamamen yanıltıcıdır.

Çözüm: Tam URL'yi almak için chrome.extention.getURL('myhtml.html') kullanın. Veya tam yol oluşturmak için uzantınızın kimliğini kullanarak dizeleri birleştirin.

var txt = '<div id="myNewDiv" ng-controller="myController">{{testing}}<div ng-include="' + "'" + chrome.extension.getURL('myhtml.html') + "'" + '"></div></div>'; 

2 - Bunu yaparken de, etki alanları arası bir istek sorunu da var. Sayfa, doğru izinleri vermediğiniz sürece yalnızca kendi alan adından gelen istekleri kabul eder. Bu kaynağa manifest.json dosyada iznini eklemeniz gerekli:

{ 
    "manifest_version": 2, 

    ..... among many others .... 

    "web_accessible_resources": [ 
     "myhtml.html" 
    ] 

} 
İlgili konular