【Android实测】WebView的JS注入
2017-05-27 12:32
435 查看
今天有个傻逼要做一个功能,webview加载页面判断是指定页面,就跑一段js给这个页面上的某个控件赋个焦点。其实就是loadUrl方法调两次就好了,但是我之前想错了,我以为每次loadUrl都会把上一个页面刷过去,然而测试发现下一次loadUrl里放某些js是不会把页面改变掉的。
嗯,我蛋花的原话是:“Js里只要不涉及跳转或链接都不会覆盖第一个链接”。
蛋花的CSDN账号是啥?
讲测试。
首先需要一个html页面,假装这是第三方:
然后就是安卓这边,写一个只有一个webview的页面做测试,第一个loadUrl写在要加载页面的地方,我的写在了onCreate:
然后是第二个loadUrl,考虑到需求是给页面赋焦点,那么就放在了webview的页面加载完成的时候。我这边是自定义WebView中设置了WebViewClient:
测试发现
嗯……真机效果图?
Intelligent Point ! Give me five !
嗯,我蛋花的原话是:“Js里只要不涉及跳转或链接都不会覆盖第一个链接”。
蛋花的CSDN账号是啥?
讲测试。
首先需要一个html页面,假装这是第三方:
<html> <head> <meta charset="UTF-8"> <title>Hello,JS</title> </head> <body> <style type="text/css"> .btn { color: white; background-color: #008aa6; padding: 0px 1em; height: 22px; margin-left: 10px; border: 0px solid black; border-radius: 5px; } .btn:hover { background-color: #ff0000; } .btn:focus { background-color: #00ff00; } /*active 要在后面 否则会被hover覆盖*/ .btn:active { background-color: #000000; } </style> <p>hello world 喵</p> <button type="button" id="btn_1" class="btn">Click Me! 1</button> <button type="button" id="btn_2" class="btn">Click Me! 2</button> <button type="button" id="btn_3" class="btn" onclick="alert('11111')">Click Me! 3</button> <button type="button" id="btn_4" class="btn">Click Me! 4</button> </body> </html>
然后就是安卓这边,写一个只有一个webview的页面做测试,第一个loadUrl写在要加载页面的地方,我的写在了onCreate:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_webview); w = (WebViewSupportJS) findViewById(R.id.webviewSupportJS); w.loadUrl(http://192.168.8.111:8080/webpage/helloJS.html); }
然后是第二个loadUrl,考虑到需求是给页面赋焦点,那么就放在了webview的页面加载完成的时候。我这边是自定义WebView中设置了WebViewClient:
// 设置支持JS getSettings().setJavaScriptEnabled(true); setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); // loadUrl("javascript:alert('hi')"); loadUrl("javascript:var div = document.getElementById(\"btn_3\");\n" + " div.focus();"); } });
测试发现
div.focus();并没有粗线触发点击事件的情况,23333,果然html相关一概不熟啊。
嗯……真机效果图?
Intelligent Point ! Give me five !
相关文章推荐
- Android WebView的Js对象注入漏洞解决方案
- Android WebView的Js对象注入漏洞解决方案
- Android中WebView无法后退和js注入漏洞的解决方案
- Android WebView的Js对象注入漏洞解决方案
- Android WebView注入js中带有URL-encode字符时报错问题
- Android WebView的Js对象注入漏洞解决方案
- Android WebView的Js对象注入漏洞解决方案
- Android WebView的Js对象注入漏洞解决方案
- Android WebView的Js对象注入漏洞解决方案
- Android WebView的Js对象注入漏洞解决方案
- Android WebView的Js对象注入漏洞解决方案
- Android WebView的Js对象注入漏洞解决方案
- Android WebView的Js对象注入漏洞解决方案
- Android webView 中 注入js 获取网页中的 图片
- 备忘--android 4.2+ WebView的addJavascriptInterface(), js找不到注入的函数
- Android WebView的Js对象注入漏洞解决方案
- Android WebView的Js对象注入漏洞解决方案
- Android WebView的Js对象注入漏洞解决方案
- Android WebView的Js对象注入漏洞解决方案
- Android WebView的Js对象注入漏洞解决方案