Ich arbeite an einem kleinen Projekt von mir mit Karma und Jasmin. Mein gezielte Browser ist Chrom 32.Verwendung von importsScripts in Blob in einer Karma-Umgebung
Ich versuche, Skripte innerhalb einer Web-Arbeiter zu importieren, die ich durch einen Klecks instanziiert haben sich wie folgt:
describeAsyncAppliPersephone("When the application project to DOM", function()
{
it("it should call the function of DomProjection in the project associated with its event", function()
{
var eventSentBack = {
eventType: 'testReceived',
headers: { id: 14, version: 4 },
payLoad: { textChanged: 'newText' }
};
var isRendered = false;
var fnProjection = function(event, payload)
{
isRendered = true;
}
var bootstrap = [
{ eventType: 'testReceived', projection: fnProjection },
{ eventType: 'test2Received', projection: function() { } }
];
runs(function()
{
var factory = new WorkerFactory();
var worker = factory.CreateByScripts('importScripts("/base/SiteWeb/project/js/app/application.js"); var app = new application(self); app.projectOnDOM(' + JSON.stringify(eventSentBack) + '); ');
console.log(worker.WorkerLocation);
var applicationQueue = new queueAsync(worker);
var projectQueue = new queueSync(worker);
var p = new project(applicationQueue, persephoneQueue, bootstrap);
applicationQueue.publish(eventSentBack);
});
waitsFor(function() { return isRendered }, "Projection called", 500);
runs(function()
{
expect(isRendered).toBe(true);
});
});
});
workerFactory ist wie folgt:
this.CreateByScripts = function(scripts, fDefListener, fOnError)
{
var arrayScripts = scripts;
if (!arrayScripts)
throw "unable to load worker for undefined scripts";
if (Object.prototype.toString.call(arrayScripts) !== '[object Array]')
arrayScripts = [arrayScripts];
var blob = new Blob(arrayScripts, { type: "text/javascript" });
var w = createWorker(window.URL.createObjectURL(blob));
return new QueryableWorker(w, fDefListener, fOnError);
}
wo createWorker ist:
createWorker = function(sUrl)
{
return new Worker(sUrl);
}
Aber die ImportScripts wirft mir die folgenden ng Fehler:
Uncaught SyntaxError: Failed to execute 'importScripts': the URL '/base/SiteWeb/project/js/app/application.js' is invalid.
ich mit dem Pfad im Browser versucht:
http://mylocalhost:9876/base/SiteWeb/project/js/app/application.js
und es gut funktioniert.
Welchen Pfad sollte ich verwenden, damit importScripts erfolgreich funktioniert?
Danke,
brilliant !!! Ich habe eine Lösung gefunden, aber es war ein bisschen hacky als deins .... Einen schönen Tag !!! – Arthis
Ich glaube, es sollte "document.location.protocol" bzw. "document.location.host" sein. –