2010-06-10 4 views
2

J'ai un problème vraiment bizarre avec mon application d'adobe air. J'ai une méthode qui lance un fichier HTML local et lui transmet des éléments de chaîne de requête.Adobe air air.navigateToURL bug avec Internet Explorer

Voici le code:

function printWin(def) { 
     def = encodeURI(def); 
     var req = new window.runtime.flash.net.URLRequest('print.html'); 
     req.method = 'GET'; 
     var urlvars = new window.runtime.flash.net.URLVariables("d="+def); 
     req.data = urlvars; 
     air.navigateToURL(req); 
     return false;  
} 

Le problème est, si ce code est exécuté lorsque Internet Explorer est complètement fermé, il est très bien et va créer une URL comme ceci:

fichier

: /// C:/Program% 20files% 20 (x86) /Gastrointestinal%20Tumors%20Dictionar/print.html?d=ABC

Toutefois, si Internet explorer est en cours d'exécution et déjà le code est exécuté, ce est l'URL qui est créé:

C: \ Program Files (x86) \ Gastrointestinal Dictionnaire Tumeurs \ print.html

Je suis à une perte pour expliquer pourquoi cela est, mais malheureusement je besoin d'essayer de résoudre ce problème de toute urgence. Quelqu'un a-t-il une idée?

Répondre

0

Pouvez-vous essayer de construire l'URL complète au lieu d'utiliser le "print.html" relatif?

Essayez ceci:

var url:String = File.applicationDirectory.url.substring(0, File.applicationDirectory.url.lastIndexOf("/") + 1) + "print.html"; 
var req = new window.runtime.flash.net.URLRequest(url); 
... 

Cela devrait vous obtenir le fichier complet: /// - URL de style à chaque fois. La méthode substring tente de pirater le fichier actuel pour que vous finissiez dans le répertoire courant, vous laissant la même possibilité de faire un chemin relatif, sauf qu'il est maintenant entièrement qualifié pour votre racine d'application.