自从我的Nexus 9平板电脑将Android系统Webview更新为44.0.2403.90版以来,我的android cordova应用程序遇到了一个错误。在我的PC上的Chrome浏览器中运行html时不会发生此问题,它只发生在我的Android平板电脑上。我正在使用cordova版本3.6.3和我的nexus9平板电脑运行5.1.1。
问题是当用新网址点击html href链接时页面将无法加载,而是导致当前页面返回到顶部(可能重新加载?)
我在一个简单的cordova应用程序中重新创建了这个问题。我从默认示例文件中更改的唯一内容是向index.html添加iframe,删除了默认的css,并添加了一些要在iFrame中显示的html文件。
cordova项目是通过以下方式创建的: 1. cordova创建linkBug com.zimmeren.linkBug LinkBug 2. cordova平台添加android 3.按指定更改www文件夹中的文件 4. cordova运行android
当应用加载时,您会看到一个空白页面,其中的iFrame有两个可以点击的链接。
的index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
<title>Hello World</title>
</head>
<body>
<iframe
src="Test_home.html"
style="width: 500px; height: 500px;"
frameBorder="4">
</iframe>
</body>
iFrame主页:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<a href="Test_page_1.html#ID1">Test Page 1</a>
<br/>
<a href="Test_page_2.html#ID2">Test Page 2</a>
</body>
</html>
iFrame测试第1页:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body id="ID1">
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
test <br/>
<a href="Test_home.html">Test Home</a>
</body>
</html>
iFrame测试第2页:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body id="ID2">
test <br/>
test <br/>
<a href="Test_home.html">Test Home</a>
</body>
</html>
要重现此问题,您只需点击“测试页面1”转到该页面,然后向下滚动到“测试主页”链接并单击它。 90%的时间链接无法正常工作,而是您将滚动回到测试1页面的顶部。我不确定为什么会发生这种情况,并且它不会像预期的那样回到主页。
到目前为止,我从调查中发现了一些事情:
要发生此问题,主页必须在网址中加载带有锚链接的测试页。
例如,它必须是<a href="Test_page_1.html#ID1">Test Page 1</a>
如果是<a href="Test_page_1.html>Test Page 1</a>
,则不会发生错误。 要发生此问题,您必须向下滚动到“测试”页面上的链接。这就是问题发生在测试页1上而不是测试页2上的原因。
当我点击Chrome开发人员网络控制台时,当我点击链接回到测试主屏幕时,它甚至不会在控制台中显示为请求。没有错误或任何东西。
作为一种解决方法,我可以不在href url中使用锚标签,但我仍然希望找到此问题的根本原因。
我将我的测试cordova项目的zip发布到tinyUpload(http://s000.tinyupload.com/?file_id=05717381766489964770)在通常的cordova位置还有一个apk。
谢谢!