jquery - क्रोम एक्सटेंशन में मेरी एजेक्स कॉल तुल्यकालिक क्यों हैं?



ajax angularjs (1)

ठीक है, यहाँ क्या होता है:

1 - विस्तार डोमेन पृष्ठ डोमेन से भिन्न है, इसलिए उसने पृष्ठ के डोमेन से चीजों को लोड करने का प्रयास किया, विस्तार फ़ाइलों से नहीं। (और संसाधन नहीं मिला)। चेतावनी संदेश पूरी तरह से इस मामले में भ्रामक है।

समाधान: उचित पूर्ण URL प्राप्त करने के लिए chrome.extention.getURL('myhtml.html') का उपयोग करें। या पूर्ण पथ बनाने के लिए आपके एक्सटेंशन आईडी का उपयोग करके एक साथ संचित्र तार।

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

2 - यहां तक ​​कि ऐसा करते हुए, एक क्रॉस-डोमेन अनुरोध समस्या भी है पृष्ठ केवल अपने स्वयं के डोमेन से अनुरोध स्वीकार करता है, जब तक कि आप इसे सही अनुमति न दें यह manifest.json फ़ाइल में इस संसाधन की अनुमति जोड़ने के लिए आवश्यक है:

{
    "manifest_version": 2,

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

    "web_accessible_resources": [
        "myhtml.html"
    ]

}

मैं क्रोम एक्सटेंशन में कुछ एजेक्स का इस्तेमाल करने की कोशिश कर रहा हूं।

मेरे पास सामग्री स्क्रिप्ट है जो किसी मौजूदा पृष्ठ में कुछ html जोड़ना है।

मैंने कोशिश की है JQuery.get , JQuery.load और JQuery.load ng-include

और वे सभी कंसोल में एक चेतावनी दिखाते हैं, मुझे बता रही है कि synchronous XHR नापसंद कर रहे हैं (प्रकृति द्वारा ये एसिंक्रोनस नहीं हैं ???)। और फिर पृष्ठ इस अजीब व्यवहार को दिखाता है, मुझे बताता है कि कुछ Pusher को परिभाषित नहीं किया गया है, फिर पृष्ठ को रीफ्रेश करता है और मेरे डाले हुए div को मारता है।

क्या गलत हो सकता है ??

नमूना कोड - अगर मैं पहले var txt सक्षम करता हूं, तो यह पूरी तरह से काम करता है। इसके बदले मैं दूसरे var txt (टिप्पणी) को सक्षम करता हूं, यह विफल रहता है।

 //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']);




content-script