2012-10-30 9 views
20

पर पीडीएफ लोड करने में समस्या हमारे मोबाइल वेब एप्लिकेशन में एक पीडीएफ डाउनलोड करने (या डाउनलोड करने का प्रयास) करते समय हमें क्रोम से निम्न संदेश मिल रहा है।क्रोम आईओएस

"चेतावनी: कुछ ठीक नहीं है! ... जिस साइट पर आप पहुंचने का प्रयास कर रहे हैं वह अजीब तरीके से काम कर रहा है, और क्रोम यह सत्यापित करने में असमर्थ है कि यूआरएल सही है।"

यह सफारी में ठीक काम कर रहा है और अनिवार्य रूप से हम यह कर रहे हैं।

  1. लोड पर यह सत्यापित करने के लिए एक कॉल करें कि जिस दस्तावेज़ को हम दिखाना चाहते हैं वह ठीक है।
    • अगर दस्तावेज़ ठीक संदेश उपयोगकर्ता नहीं है और फिर टैब
  2. प्रत्यक्ष टैब एक पते जो पीडीएफ डाउनलोड करता है नेविगेट करने के लिए बंद कर दें।

    DoRequest ("print_report", 
          "VALIDATE", 
          mycallback); 
    
    function mycallback (data,error) { 
    
        var h_href = ""; 
        var h_widget = ""; 
    
        if(error == true) { 
         window.close(); 
         return; 
        }  
    
        h_href = GenerateHREF("print_report", "PRINT"); 
    
        window.location.href = h_href;   
    } 
    

    GenerateHREF द्वारा प्रदत्त URL एक ही मूल साइट के लिए है और मूल के सापेक्ष है:

बहुत ज्यादा कोड पोस्टिंग के बिना जावास्क्रिप्ट कुछ इस तरह है।
माइम प्रकार एप्लिकेशन/पीडीएफ पर सेट है। सामग्री-स्वभाव इनलाइन पर सेट है। मैंने सामग्री-आकार शीर्षलेख को भी सेट करने का प्रयास किया है लेकिन ऐसा कोई प्रभाव नहीं प्रतीत होता है।

Content-Disposition: attachment; filename="pp66.26.pdf" 
Content-Length: 31706 
Content-Type: application/pdf 

मुझे कुछ याद आ रहा है ... बस क्या?

+0

मैं वर्तमान में अनुमान लगा रहा हूं कि यह पॉपअप अवरोध से संबंधित है, नेविगेशन क्रोम लिंक को प्रदर्शित करना शुरू करने से ठीक पहले उपयोगकर्ता इंटरैक्शन जोड़कर। – DuStorm

+0

जबकि विशेष रूप से उत्तर आईओएस क्रोम के लिए रिमोट डीबगिंग का जवाब नहीं होगा। http://stackoverflow.com/questions/11262236/chrome-for-ios-remote-debugger – DuStorm

+0

मुझे लगता है कि यह क्रोम बग है, यह लिंक देखें: http://code.google.com/p/chromium/issues/ विस्तार? आईडी = 85549, सामग्री-लंबाई के बारे में कुछ। – joao

उत्तर

0

यदि यह पॉपअप/डाउनलोड समस्या है तो आप इसे iframe का उपयोग करके दिखा सकते हैं?

<iframe src="downloads/report.pdf"></iframe> 
0

मैं भी लगता है कि पॉपअप व्यवहार शायद संदिग्धों की सूची पर उच्च है (विशेष रूप से window.close(); लाइन बहुत संदिग्ध खासकर अगर पॉपअप उपयोगकर्ता द्वारा अवरुद्ध है लगता है)।

हालांकि, अंतिम लक्ष्य फ़ाइल डाउनलोड करने के लिए है के बाद से, आप प्रतिक्रिया हेडर बदल रहा

Content-Disposition: attachment; filename="pp66.26.pdf" 
Content-Length: 31706 
Content-Type: applicaton/octet-stream 

की कोशिश कर सकते हैं या आप .htaccess फाइल के माध्यम से एक डाउनलोड के लिए मजबूर करने के लिए एक विशेष फ़ोल्डर में सभी pdfs के लिए मजबूर की कोशिश कर सकते , तो बस location.href प्रयोग कर रहे हैं के माध्यम से उनसे लिंक करने वाली: बेस 64 के लिए दस्तावेज़ को पार्स करने और अपने दस्तावेज़ या iframe को जोड़ा गया के लिए

<FilesMatch "\.pdf$"> 
ForceType applicaton/octet-stream 
Header set Content-Disposition attachment 
</FilesMatch> 
1

प्रयास करें।

function getAsyncBase64(fileName, callBack){ 
     var xhr = new XMLHttpRequest(); 
     xhr.open('GET', fileName, true); 
     xhr.responseType = 'arraybuffer'; 
     xhr.onload = function (e) { 
     if (this.status == 200) { 
      var uInt8Array = new Uint8Array(this.response || this.responseText); 
      var i = uInt8Array.length; 
      var binaryString = new Array(i); 
      while (i--) { 
       binaryString[i] = String.fromCharCode(uInt8Array[i]); 
      } 
      var dataBinary = binaryString.join(''); 
      var data64 = window.btoa(dataBinary); 
      callback(data64);     
     } 
     xhr.send(); 
    }; 
    function callback(base64){ 
     window.open(base64, "_blank"); 
     //or 
     iframe.src = "data:application/pdf;base64,"+ base64; 
    }; 

    getAsyncBase64(url,callback);