JavaScript: "Uncaught SecurityError" lors de la démo JS-XSL localement

(Cette question concerne la démonstration JS-XSL trouvée ici )

Pour vous dire brièvement ce que représente cette démo; il faut un file MS Excel comme input, parsing datatables et produit datatables en format text uniquement. J'ai téléchargé le package (zip) et l'ai exécuté localement, simplement en ouvrant le file html avec Chrome.

Le problème est que je ne peux tout simplement pas surmonter l'erreur suivante:

Uncaught SecurityError: Failed to construct 'Worker': Script at 'file:///C:/Users/David/Desktop/Xlsx%20Demo/xlsworker.js' cannot be accessed from origin 'null'. 

Et au-dessus des points d'erreur à la ligne 34 du file html, qui contient le code suivant:

 /* I changed the file path from './xlsworker.js' to 'xlsworker.js' */ var worker = new Worker('xlsworker.js'); 

Il n'y a que trois files pour cette démo: le file html lui-même et deux files javascript, un est nommé xls.js et l'autre xlsworker.js . Les trois files se trouvent dans le même directory et au même niveau.

Ce qui est plutôt déconcertant pour moi, c'est que j'ai réussi cette même démonstration avec succès depuis quelques mois! Je ne peux pas imaginer si je fais quelque chose différemment maintenant. Quelques idées?

https://code.google.com/p/chromium/issues/detail?id=278883#c9

Vous êtes essentiellement empêché par Chromium d'utiliser les travailleurs sur le file: // protocole, vous devez héberger vos files et les accéder via le protocole http: //.

Vous avez besoin d'un server (même quelque chose de simple comme http://docs.python.org/2/library/simplehttpserver.html )

IMO, ci-dessous est une réponse supérieure, car il ne nécessite pas d'exécuter un server Web. C'est extrêmement rapide et simple.

(le downvote est expliqué dans ma Note 5 ci-dessous)

J'ai testé et vérifié que cette solution fonctionne avec la démo liée par le requestur, lorsqu'il est exécuté localement comme décrit par le requestur. Testé sur Windows 10, Chrome Stable x64 48.0.2564.103 m.

Un script n'est pas autorisé à accéder à votre système de files local dans Chrome. Si vous souhaitez tester les opérateurs Web localement, vous devez ouvrir Chrome avec un drapeau spécial.

Sur Windows, lancez chrome avec le drapeau:

 chrome.exe --allow-file-access-from-files 

Après cela, Chrome sera lancé et vous pourrez tester les travailleurs au cours de cette session.

Note1: si Chrome est déjà en cours d'exécution lorsque vous exécutez cette command, la nouvelle instance de Chrome ne permettra pas aux travailleurs d'exécuter – vous devez d'abord quitter Chrome (si nécessaire, utilisez le Gestionnaire des tâches de Windows pour vous assurer que Chrome ne fonctionne pas).

Note 2: la source de cette réponse (lien ci-dessous) comprend l'indicateur –args sur Windows, mais je n'ai pas trouvé les "args" nécessaires sur Windows. En fait, je ne trouve aucune documentation du drapeau "args" n'importe où, pas sûr de ce qu'il fait. Je ne l'inclue pas dans la command Windows ci-dessus. *

Note 3: Pour ceux qui essaient de faire quelque chose de similaire sur Chrome-Mac ou Windows-Firefox, le lien ci-dessous comprend les deux, ainsi que la solution Windows-Chrome ci-dessus. Mais ma solution décrite ci-dessus n'est que la méthode Windows-Chrome.

http://js-workout.tompascall.com/web-workers-and-responsiveness/

Note 4: Notez que cette solution n'est pas identique à celle d'un server Web, mais pour votre but, il devrait s'agir d'une solution complètement adéquate. Aussi, sachez que pour naviguer sur le Web avec ce commutateur de démarrage chrome activé, vous risquez de compromettre votre security de file local, il est donc conseillé de n'utiliser cette méthode que dans votre file local et de la désactiver pour la navigation sur le Web. *

Note 5: Google déclare que l'utilisation de drapeaux de démarrage "ne doit être utilisée que pour des cas temporaires et peut se briser dans le futur". La search Web pour les commutateurs de démarrage chrome renvoie environ 2 000 hits, donc beaucoup de gens les utilisent et les blogent. Si votre besoin est temporaire, alors cela fonctionne très bien. *