Javascript链接-尝试设置元素值-怪异行为chrome&;安卓
我在Android上开发一个混合应用程序时遇到了一个奇怪的问题,实际上我在Chrome上复制了它 基本思想是一个带有输入字段的HTML页面,并尝试使用JS注入设置值:Javascript链接-尝试设置元素值-怪异行为chrome&;安卓,javascript,android,internet-explorer,google-chrome,firefox,Javascript,Android,Internet Explorer,Google Chrome,Firefox,我在Android上开发一个混合应用程序时遇到了一个奇怪的问题,实际上我在Chrome上复制了它 基本思想是一个带有输入字段的HTML页面,并尝试使用JS注入设置值: javascript:document.getElementById('intest').value = '1111'; 如果打开javascript链接,则使用JS命令而不是设置文本输入字段-整个页面将替换为您输入的值。 这是我用于演示的HTML: <html> <body> <p>&
javascript:document.getElementById('intest').value = '1111';
如果打开javascript链接,则使用JS命令而不是设置文本输入字段-整个页面将替换为您输入的值。
这是我用于演示的HTML:
<html>
<body>
<p><input id='intest' type='text' /></p>
<input id='intest' type='text' />
<br/>
<h3>JS Command</h3>
<a href="javascript:document.getElementById('intest').value = '1111';">javascript:document.getElementById('intest').value = '1111';</a>
</body>
</html>
输入id=';intest&39;类型=';正文'/
JS命令
如果在控制台中输入相同的命令,它将按预期设置输入字段的值
在Android中,使用webview.loadURL(“javascript:…”)时的行为是相同的
你知道为什么会这样吗
另外,我创建了一个简单的html页面:
更新,IExplorer和Firefox也是如此。这很奇怪,即使在单击锚定标记后检查页面,仍然可以看到标记。我发现如果添加
返回false代码>更改值后,它将按预期工作。我测试的是chrome,不是Android
<a href="javascript:document.getElementById('intest').value = '1111'; return false;">javascript:document.getElementById('intest').value = '1111'; return false;</a>
使用“return false;”很好,你有没有解释为什么会改变什么?这是一种防止默认浏览器行为的方法,比如event.preventDefault()
所以,我猜这是一个bug,因为我无法想象这里的“default”预期行为。我想这是因为你在href属性中有它,因此,chrome很难完全理解您将用户发送到哪里。在onclick属性而不是href中尝试它,但不返回false。我猜这也行。我实际上是从将JS命令粘贴到浏览器输入行开始的,这类似于android代码注入中loadURL命令的效果。onClick是一个内部页面JS,不通过浏览器URL逻辑-因此它可以工作。