Javascript链接-试图设置元素值-奇怪的行为chrome&安卓

Javascript link - trying to set element value - weird behavior chrome & android

本文关键字:chrome amp 安卓 链接 设置 元素 Javascript      更新时间:2023-09-26

我在安卓系统中开发Hybrid应用程序时遇到了一个奇怪的问题,实际上我成功地在Chrome中复制了它。

基本思想是一个带有输入字段的HTML页面,并尝试使用JS注入来设置值:

javascript:document.getElementById('intest').value = '1111';

如果打开javascript链接,JS命令而不是设置文本输入字段-整个页面都将替换为您输入的值

这是我用于演示的HTML:

<html>
<body>
<p>&lt;input id=&#39;intest&#39; type=&#39;text&#39; /&gt;</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:….')时的行为是相同的;

你知道为什么会这样吗?

附言:我创建了一个简单的html页面来玩:https://dl.dropboxusercontent.com/u/453866/injectiontest.html

更新,IExplorer和Firefox也是如此。

这很奇怪,即使在单击锚标记后检查页面时,仍然可以看到标记。我发现,如果在更改值后添加return false;,它将按预期工作。我测试的是chrome,而不是安卓。

<a href="javascript:document.getElementById('intest').value = '1111'; return false;">javascript:document.getElementById('intest').value = '1111'; return false;</a>