在我的应用中,我目前正在使用网页视图来显示一些内容。然后,我使用Javascript注入快速填写用户的表单。
唯一的问题是,与Chrome自定义标签相比,Webview的速度非常慢。是否可以将Javascript代码注入这些自定义选项卡?
例如,以下是我目前使用的一些代码:
myWebView.loadUrl("javascript:document.getElementById('join_first_name').value='" + name + "';void(0); ");
答案 0 :(得分:27)
没有;这将是一个关键的安全漏洞。
由于自定义标签使用用户真实Chrome实例中的Cookie,设置和密码管理器,因此您根本无法控制它们。
答案 1 :(得分:6)
Chrome禁止您执行任何上述操作。如果允许这样做,则将是一个很大的安全问题,因为您可以在应用程序中修改页面。
假设您有一个具有Facebook登录的应用程序。您可以使用上述方法来窃取某人的登录信息。但是由于不允许注入javascript,因此我们无法做到这一点。
使用Chrome的“自定义”标签,您对所提供的内容没有太多控制权。您可能应该尝试其他方法,例如将名字作为URL参数传递,然后在该页面上编写脚本以读取参数并填写表格。
答案 2 :(得分:4)
您需要使用data:text/html,
作为脚本前缀
在浏览器标签中尝试
data:text/html,<script>alert("hello")</script>
它将触发javascript和alert,并且您也可以从url以html格式打印一些内容
所以我想您只需要使用脚本打开选项卡
String suffix = "data:text/html,"
String script = "<script>document.getElementById('join_first_name').value='" + name + "';</script>"
String url = suffix + script
myWebView.loadUrl(url);
这是desktop
和mobile
我还没有在WebView.loadUrl
中尝试过,实际上,如果通过WebView.loadUrl
完成,那将是一个安全漏洞
答案 3 :(得分:1)
应该无法将Javascript
注入Chrome网络浏览器。
如果您可以通过某些第三方应用对chrome执行Javascript查询,则可以读取所有cookie,清除每个会话以及javascript的功能。这确实是一个巨大的安全漏洞。
您可以做的是在网络视图中加载URL
并在其中执行JavaScript。那是我所听说过的唯一可能。这是用于EPUB
文档的技术,先将完整的HTML内容加载到webview中,然后在该视图中执行外部Javascript
查询,以便您可以修改 HTML,CSS属性< / em>。