2014-10-21 8 views
6

मैं वेब दृश्य में एक स्ट्रिंग के रूप में निम्नलिखित एचटीएमएल लोड करने के लिए कोशिश कर रहा हूँ:एंड्रॉइड वेबव्यू - एकल लाइन जावास्क्रिप्ट टिप्पणियां अनकॉट सिंटेक्स त्रुटि त्रुटियों का कारण बनती हैं?

<html> 
    <head> 
    <script> 
     function foo() { 
     // test. 
     } 
    </script> 
    </head> 
    <body> 
    <p>hi.</p> 
    </body> 
</html> 

------------------------------ 

String content = readAboveContentIntoString(); 
WebView webview = ...; 
webview.loadData(content, "text/html", "utf-8"); 

मैं वेबव्यू कंसोल से निम्न संदेश मिलता है: मैं "// परीक्षण निकालते हैं

Uncaught SyntaxError: Unexpected end of input 

। " टिप्पणी, मुझे वाक्यविन्यास त्रुटि नहीं मिलती है।

function foo() { // test. } 

कर सकते हैं किसी और रेप्रो इस: यह रूप में अगर वेबव्यू नई पंक्तियां अलग करना है, और इसलिए समारोह शरीर तो जैसे समापन ब्रेस टिप्पणी आवेदन कर रहा है है? मैंने सोचा कि शायद मेरा readAboveContentIntoString() न्यूलाइन को अलग कर रहा था, लेकिन परीक्षण किया और यह नहीं है। मैं एंड्रॉइड 4.4.4 का उपयोग कर रहा हूँ।

धन्यवाद

- संपादित करें ---

इसके अलावा, एक ब्लॉक टिप्पणी लाइन टिप्पणी के स्थान पर ठीक काम करता है:

/* test. */ 
+0

नवीनतम एंड्रॉयड स्टूडियो का निर्माण और एपीआई 21 – user636066

+0

गड़बड़ जिंदा पुष्टि की के साथ एक ही समस्या हो रही और एपीआई 23. में वेबव्यू/क्रोमियम 44 अप करने के लिए लात मैं अभिनीत करने का सुझाव [मुद्दा ] (https://code.google.com/p/android/issues/detail?id=23437) क्योंकि इसे "अप्रचलित" माना जाता था? –

उत्तर

2

मैं एक ही समस्या थी। ऐसा लगता है कि पहले सामग्री स्ट्रिंग से टिप्पणियां निकालना और फिर इसे वेबव्यू पर लोड करना एकमात्र तरीका है।

String content = readAboveContentIntoString(); 
WebView webview = ...; 

// Add This : 
content = removeComment(content); 

webview.loadData(content, "text/html", "utf-8"); 

फ़ंक्शन हटाने कॉमेंट() दोनों पंक्तियों की टिप्पणियों को हटा देता है और टिप्पणियां अवरुद्ध करता है।

private String removeComment(String codeString){ 

    int pointer; 
    int[] pos; 
    String str = codeString; 

    while(true) { 

     pointer = 0; 
     pos = new int[2]; 
     pos[0] = str.indexOf("/*",pointer); 
     pos[1] = str.indexOf("//",pointer); 
     int xPos = xMin(pos); 

     if(xPos != -1){ 

      //========================= Pos 0 
      if(xPos == pos[0]){ 
       pointer = xPos + 2; 
       int pos2 = str.indexOf("*/", pointer); 
       if(pos2 != -1){ 
        str = str.substring(0,xPos) + str.substring(pos2+2,str.length()); 
       } 
       else{ 
        str = str.substring(0,xPos); 
        break; 
       } 
      } 
      //========================= Pos 1 
      if(xPos == pos[1]){ 
       pointer = xPos + 2; 
       int pos2 = str.indexOf('\n', pointer); 
       if(pos2 != -1){ 
        str = str.substring(0,xPos) + str.substring(pos2+1,str.length()); 
       } 
       else{ 
        str = str.substring(0,xPos); 
        break; 
       } 
      } 
     } 
     else break; 
    } 
    return str; 
} 

private int xMin(int[] x){ 
    int out = -1; 

    for(int i = 0;i < x.length;i++){ 
     if(x[i] > out)out = x[i]; 
    } 
    if(out == -1)return out; 

    for(int i = 0;i < x.length;i++){ 
     if(x[i] != -1 && x[i] < out)out = x[i]; 
    } 

    return out; 
} 
0

क्या आपकी जावा स्ट्रिंग में टिप्पणी पंक्ति के बाद एक लाइनब्रेक है? यदि नहीं, पहले "//" के बाद जावास्क्रिप्ट तत्व में सब कुछ एक अंतहीन एकल पंक्ति टिप्पणी के रूप में व्याख्या किया जाएगा, क्योंकि इसे "// test" के बाद कोई "\ n" नहीं मिलता है।

इस मुद्दे में टिप्पणी 5 देखें: https://issuetracker.google.com/issues/36937564#comment5

संबंधित मुद्दे

 संबंधित मुद्दे