Javascript android 得到错误的宽度

标签 javascript android html android-webview jqmath

我的 android xml 布局中有一些按钮,一旦我按下其中一个按钮,我调用了一个 javascript 函数将一些文本附加到 webview 中的“p”html 元素,但是一旦 p 元素的宽度变得比webview 的屏幕宽度我调用下面的代码滚动到 p 元素的末尾。

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

但有时这段代码无法正常工作,因为 document.getElementById("myp").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/>

这是设置 webview 的 java 代码:

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

最佳答案

M.parseMath(element)element 内的 $$...$$ 文本节点转换为格式化(二维) ) 数学表达式,它改变了它的宽度。所以尝试在 M.parseMath() 调用window.scrollBy(element.scrollWidth,0);之后,而不是之前,这样element.scrollWidth 可以为您提供正确的最终元素宽度。

关于Javascript android 得到错误的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583522/

相关文章:

android - 将默认区域设置设置为 DatePicker 和 TimePicker

android - 检测不安全的 wifi 网络是否真的可以访问互联网

html - bootstrap 4 内的 SVG 行,flex div 不可见

javascript - 使用象形图示例

javascript - 如何使用 React-bootstrap 进行多输入表单验证?

javascript - 在 Internet Explorer createjs-preloadjs 中预加载声音不起作用

android - 没有互联网的本地网络多人游戏

javascript - 有没有一种方法不仅可以向 HTML 元素添加/删除一个类,而且还可以实际更改 CSS 类中的值?

javascript - 在css中制作具有悬停效果的渐变背景按钮

javascript - 如何从不在 'change' 处理程序中的 kendoDatePicker 获取当前日期