2016-04-12 160 views
0

我在我的android xml佈局中有一些按鈕,一旦我按下其中一個按鈕,我調用了一個javascript函數將一些文本添加到webview中的'p'html元素,但一旦寬度p元素變得比webview的屏幕寬度更寬我調用下面的代碼來滾動到p元素的末尾。JavaScript android獲取錯誤的寬度

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

,但有時這些代碼does not工作正常,因爲它似乎的document.getElementById(「中學項目」)。scrollWidth是讓我錯了寬度和我使用的console.log檢查寬度調試代碼,它似乎有時它是在相同的寬度,而不是更新我正在添加到p元素的新文本​​。我也嘗試使用$(document).width(),有時它也得到了我錯誤的寬度。

這是包含在javascript1.js文件,我打電話給我的javascript函數:

function append(input){ 

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

     M.parseMath(element) ; 
     } 

的M.parseMath()是一個功能,我從一個jqmath庫調用,用於顯示的數學公式,工作正常如預期

和HTML代碼(包括jQuery和jqmath庫)

  <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> 

和第是是XML佈局

<?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/> 

並且這對於內部element建立網頁視圖

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

回答

2

M.parseMath(element)$$...$$文本節點轉換爲格式化(2維)數學表達式,Java代碼,其改變其寬度。所以試着在的M.parseMath()之後調用window.scrollBy(element.scrollWidth,0);,而不是之前,這樣element.scrollWidth可以給你正確的最終元素寬度。

+0

thx回覆我認爲這個問題與android.i中的webview有關,我覺得有一個錯誤或其中的東西,因爲我在瀏覽器中完全相同的代碼並且完美地工作。順便說一下,真棒圖書館 – has19