Javascript Android получает неправильную ширину

У меня есть несколько кнопок в моем макете Android xml, как только я нажимаю одну из кнопок, я вызвал функцию javascript, чтобы добавить некоторый текст к элементу p 'html в веб-просмотре, но как только ширина элемента p становится шире, чем ширина экрана webview Я вызвал код ниже, чтобы прокрутить до конца элемента p.

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

Но иногда этот код не работает должным образом, так как кажется, что document.getElementById("myp"). ScrollWidth дает мне неправильную ширину, и я отлаживаю код с помощью console.log для проверки ширины, и иногда кажется, что это застрял на той же ширине и не обновляется по отношению к новому тексту, который я добавляю в элемент p.

Я также пытался использовать $(document).width(), а иногда и получаю неправильную ширину.

Это моя функция javascript, включенная в файл javascript1.js, который я вызываю:

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

И это код Java для настройки веб-просмотра:

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

1 ответ

M.parseMath(element) преобразует $$...$$ текстовый узел внутри element в форматированное (2-мерное) математическое выражение, которое меняет свою ширину. Так что попробуйте сделать window.scrollBy(element.scrollWidth,0); после M.parseMath() звоните, не раньше, чтобы element.scrollWidth может дать вам правильную конечную ширину элемента.

Другие вопросы по тегам