我在Android中开发混合应用程序时遇到了一个奇怪的问题,并且实际上设法在Chrome中重现它。Javascript链接 - 尝试设置元素值 - 怪异行为chrome&android
的基础理念是输入域的HTML页面,并尝试使用JS注射设定值:
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>
如果您在控制台中输入相同的命令,将设置输入字段的值如预期。
在Android中,使用webview.loadURL('javascript:....')时的行为是相同的。
任何想法为什么会发生这种情况?
P.S.我创建了一个简单的HTML页面来玩: https://dl.dropboxusercontent.com/u/453866/injectiontest.html
更新,这也是在IExplorer和Firefox的情况。
尼斯发现与“返回假”,你哟有一个解释为什么这会改变什么? – Raanan
这是一种防止默认浏览器行为的方法,比如'event.preventDefault()' – NaNpx
所以,我猜这是一个错误,因为我无法想象这里的“默认”期望的行为。 – Raanan