Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android';中修改选择时,文本选择菜单将消失;s网络视图_Android_Html_Css_Webview_Android Webview - Fatal编程技术网

在Android';中修改选择时,文本选择菜单将消失;s网络视图

在Android';中修改选择时,文本选择菜单将消失;s网络视图,android,html,css,webview,android-webview,Android,Html,Css,Webview,Android Webview,我到处都找遍了,似乎找不到有同样问题的人 问题摘要: 当我选择一些文本时,会出现标准菜单(复制、粘贴等),但当我修改选择使其包含具有特定CSS规则的单词时,菜单将消失(选择保持活动状态) 到目前为止,我在以下设备上遇到了此问题: “三星Galaxy Tab S”(SM-T705),安卓6.0.1,Chrome/78.0.3904.108 “三星Galaxy Tab A”(SM-T550),安卓7.1.1,Chrome/77.0.3865.92 “三星Galaxy Tab S4”(SM-T830

我到处都找遍了,似乎找不到有同样问题的人

问题摘要:
当我选择一些文本时,会出现标准菜单(复制、粘贴等),但当我修改选择使其包含具有特定CSS规则的单词时,菜单将消失(选择保持活动状态)

到目前为止,我在以下设备上遇到了此问题:

  • “三星Galaxy Tab S”(SM-T705),安卓6.0.1,Chrome/78.0.3904.108
  • “三星Galaxy Tab A”(SM-T550),安卓7.1.1,Chrome/77.0.3865.92
  • “三星Galaxy Tab S4”(SM-T830),安卓9,Chrome/78.0.3904.108
  • “OnePlus 6T”、Android 9、Chrome/79.0.3945.93
低于6的Android版本似乎没有受到影响(我认为是因为文本选择菜单不同)

问题的较长版本:
我正在做一个项目,在这个项目中,我们有充满文本的网页,并且这个文本应该是可选择的。
问题是,某些HTML元素具有破坏文本选择菜单的CSS规则,我不知道为什么。
不幸的是,这些网页是由第三方生成的,因此我无法直接控制它们的结构/CSS规则。
我取了其中一页,尽可能地将其剥离,只留下复制问题所需的东西

以下是页面的HTML:

<!DOCTYPE html>
<html lang="en-US">
<head>
    <meta content="width=558, height=754" name="viewport">
    <meta charset="utf-8">
    <meta content="0:0:558.425:754.016" name="pagecontentbbox">
    <title>Test Page</title>
    <link href="css/page.css" rel="stylesheet" type="text/css">
</head>
<body>
<section>
    <div id="container">
        <div id="parent-p1">
            <p><span class="vab lh1 psa" id="first_span"><span
                    class="sid19 sf19 sf1 sf20 di psr b0 l0" data-x="126" data-y="322" id="word8">ONE</span><span
                    class=" sf19 di psr b0 l0 fm sf22"> </span><span
                    class="sid23 sf19 sf1 sf20 di psr b0 l0" data-x="165" data-y="322" id="word9">TWO</span><span
                    class=" sf19 di psr b0 l0 fm sf24"> </span><span
                    class="sid25 sf19 sf1 sf20 di psr b0 l0" data-x="246" data-y="322" id="word10">THREE</span><span
                    class=" sf7 di psr b0 l0 fm sf8"> </span></span></p>
            <p><span class="vab lh1 psa" id="second_span"><span
                    class="sid448 sf448 sf1 sf449 di psr b0 l0" data-x="126" data-y="580"
                    id="word234">FOUR</span><span class=" sf448 di psr b0 l0 fm sf451"> </span><span
                    class="sid452 sf448 sf452 sf449 di psr b0 l0" data-x="143" data-y="579"
                    id="word235">FIVE</span><span class=" sf448 di psr b0 l0 fm sf454"> </span><span
                    class="sid455 sf448 sf452 sf449 di psr b0 l0" data-x="179" data-y="579"
                    id="word236">SIX</span><span
                    class=" sf448 di psr b0 l0 fm sf456"> </span><span
                    class="sid457 sf448 sf1 sf449 di psr b0 l0" data-x="260" data-y="580"
                    id="word237">SEVEN</span><span class=" sf448 di psr b0 l0 fm sf458"> </span><span
                    class="sid459 sf448 sf1 sf449 di psr b0 l0" data-x="280" data-y="580"
                    id="word238">EIGHT</span><span
                    class=" sf7 di psr b0 l0 fm sf8"> </span></span></p></div>
    </div>
</section>
</body>
</html>
body {
    height: 754px;
    margin: 0;
    width: 558px;
}

span {
    border: 0;
    margin: 0;
    white-space: pre;
    position: relative;
}

#container {
    height: 754.016px;
    left: 0px;
    overflow: hidden;
    position: absolute;
    top: 0px;
    width: 558.425px;
}

#parent-p1 {
    -moz-transform: scale(0.15613);
    -moz-transform-origin: left bottom;
    -ms-transform: scale(0.015613);
    -ms-transform-origin: left bottom;
    -o-transform: scale(0.015613);
    -o-transform-origin: left bottom;
    -webkit-transform: scale(0.015613);
    -webkit-transform-origin: left bottom;
    height: 100%;
    position: absolute;
    white-space: nowrap;
    width: 100%;
}

#first_span {
    bottom: 27661.888px;
    left: 8073.216px;
}

#second_span {
    -moz-transform: matrix(0.98, -0, -0, 1, 0, 0);
    -moz-transform-origin: bottom left;
    -ms-transform: matrix(0.98, -0, -0, 1, 0, 0);
    -ms-transform-origin: bottom left;
    -webkit-transform: matrix(0.98, -0, -0, 1, 0, 0);
    -webkit-transform-origin: bottom left;
    bottom: 11185.536px;
    left: 8073.216px;
    transform: matrix(0.98, -0, -0, 1, 0, 0);
    transform-origin: bottom left;
}

.vab {
    vertical-align: bottom;
}

.psa {
    position: absolute;
}

.lh1 {
    line-height: 1;
}

.psr {
    position: relative;
}

.b0 {
    bottom: 0;
}

.l0 {
    left: 0;
}

.fm {
    font-family: monospace;
}

.sf7 {
    font-size: 0px;
}

.sf8 {
    letter-spacing: 0px;
}

.sf19 {
    font-size: 2048px;
}

.sf20 {
    color: #D6AB52;
}

.sf22 {
    letter-spacing: -807.117px;
}

.sf24 {
    letter-spacing: -798.643px;
}

.sf448 {
    font-size: 1280.002px;
}

.sf449 {
    color: #CA9937;
}

.sf451 {
    letter-spacing: -509.595px;
}

.sf454 {
    letter-spacing: -548.36px;
}

.sf456 {
    letter-spacing: -509.217px;
}

.sf458 {
    letter-spacing: -509.749px;
}

.sid23 {
    letter-spacing: -7.629px;
}

.sid25 {
    letter-spacing: -2.664px;
}

.sid448 {
    letter-spacing: -0px;
}

.sid452 {
    letter-spacing: 9.408px;
}

.sid455 {
    letter-spacing: 0px;
}

.sid457 {
    letter-spacing: 0px;
}

.sid459 {
    letter-spacing: -4.058px;
}
以下是加载页面的方式:

public class MainActivity extends AppCompatActivity {

    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = findViewById(R.id.webview);
        webView.setWebContentsDebuggingEnabled(true);

        webView.loadUrl("file:///android_asset/page.html");
    }
}
如果有用,我可以将测试应用程序上载到GitHub

这里有几个例子来说明这个问题

案例1:

  • 选择“一”,菜单出现。(好的)
案例2:

  • 选择“两个”,菜单出现
  • 更改选择,使“一”也包括在内。菜单将消失,而选择仍处于活动状态。(不好)
案例3:

  • 选择“两个”,菜单出现
  • 更改选择,使“三”也包括在内。菜单还在那儿。(好的)
案例4:

  • 选择“四”,菜单出现。(好的)
案例5:

  • 选择“五”,菜单出现
  • 更改选择,使“四”也包括在内。菜单将消失,而选择仍处于活动状态。(不好)
案例6:

  • 选择“五”,菜单出现
  • 更改选择,使“六”(或“七”或“八”)也包括在内。菜单还在那儿。(好的)
基本上,如果只选择导致问题的单词,则会出现菜单。只有在创建包含有问题单词的文本选择时,它才会消失。
在提供的示例中,导致问题的单词是“1”和“4”,但我不认为它们本身就是原因。
恰好这些单词都位于
元素(
id=“first\u span”
id=“second\u span”
)的开头,这些元素具有可能导致问题的特定CSS规则。
所讨论的CSS规则是左:…px;“,在对两个
元素禁用它(或将其设置为0)后,菜单的行为与预期一致。
所以在这一点上,我不知道这是否是由重叠元素、嵌套或其他原因引起的问题


希望我提供了所有必要的信息,如果有人能帮我弄清楚发生了什么以及为什么会发生这种情况,我将不胜感激。

在做了一些挖掘之后,我发现问题不是由网络视图引起的,而是由Chrome(在“71.0.3578.99”和“76.0.3793.0”之间的一些版本中引入的)引起的。

事实上,他们的bug追踪器在以下链接上已经有一个未解决的问题:

在做了一些挖掘之后,我发现问题不是由WebView引起的,而是由Chrome(在“71.0.3578.99”和“76.0.3793.0”之间的一些版本中引入)引起的。

事实上,他们的bug追踪器在以下链接上已经有一个未解决的问题: