2016-04-12 13 views
0

Ich habe einige Schaltflächen in meinem Android-XML-Layout, sobald ich einen der Knöpfe, die ich eine Javascript-Funktion aufgerufen, um etwas Text an ein 'p' html Element in einem Webview anfügen, aber einmal die Breite der p element wird breiter als die Bildschirmbreite von webview Ich habe den unten stehenden Code aufgerufen, um zum Ende des p-Elements zu scrollen.Javascript android bekommen die falsche Breite

window.scrollBy(document.getElementById("myp").scrollWidth,0) 

aber manchmal Arbeit dieser nicht-Code korrekt, wie es, dass document.getElementById („myp“) scheint. ScrollWidth mir die falsche Breite wird immer und ich debuggen den Code von console.log mit der Breite zu überprüfen und scheint, dass es manchmal in der gleichen Breite bleibt und nicht in Bezug auf den neuen Text aktualisiert, den ich dem p-Element hinzufüge. Ich habe auch versucht, mit $ (Dokument). Width() und manchmal auch bekomme ich die falsche Breite.

das ist mein Javascript-Funktion in javascript1.js-Datei enthalten, die ich nennen:

function append(input){ 

    var element=$('#myp')[0]; 
    element.innerHTML="$$" + input + "$$"; 
    window.scrollBy(element.scrollWidth,0); 

     M.parseMath(element) ; 
     } 

die M.parseMath() ist eine Funktion, die ich von einer jqmath Bibliothek aufrufen mathematische Formeln für die Anzeige der gut arbeitet wie erwartet

und der HTML-Code ist (enthält eine jquery und jqmath Bibliothek)

  <html><head> 

      <link rel='stylesheet' href='mathscribe/jqmath-0.4.3.css'> 
      <link rel='stylesheet' href='mathscribe/mystyle.css'> 

      <meta name="viewport" content="width=device-width, user-  
      scalable=no" /> 
      <script src='mathscribe/jquery-1.4.3.min.js'></script> 
      <script src='mathscribe/jqmath-etc-0.4.3.min.js'></script> 



      <script src='mathscribe/javascript1.js'></script>" 
      <script src='mathscribe/jquery.js'></script>" 
      </head> 
      <body id='mybody'> 
      <p id='myp'></p> 
      </body> 
      </html> 

und th das XML-Layout wird

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:weightSum="1"> 


<WebView 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:id="@+id/webView" 

    android:focusableInTouchMode="true" 
    android:layout_weight="0.5" /> 

    <Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="insert" 
    android:id="@+id/insertnewtext" 
    android:onClick="clickme" 
    android:layout_gravity="center_horizontal" /> 

    <LinearLayout/> 

und dies ist der Java-Code für die webview

 WebView webView= (WebView) getActivity().findViewById(R.id.webView); 
    WebSettings mWebSettings = webView.getSettings(); 
    mWebSettings.setJavaScriptEnabled(true); 

Antwort

2

M.parseMath(element) wandelt die $$...$$ Textknoten innerhalb element auf einen formatierte (2-dimensional) mathematischen Ausdruck Einrichtung, die ändert seine Breite. Versuchen Sie also, die window.scrollBy(element.scrollWidth,0);nach die M.parseMath() Aufruf, nicht vorher, so dass element.scrollWidth Ihnen die richtige endgültige Elementbreite geben kann.

+0

thx für die Antwort ich denke, dass das Problem mit dem Webview in Android verwandt ist. Ich denke, es gibt einen Fehler oder etwas darin, wie ich den exakt gleichen Code in einem Browser versuchte und funktioniert perfekt. tolle Bibliothek übrigens – has19

Verwandte Themen