㈠ 如何設置WebView支持js的Alert,Confirm,Prompt函數的彈出提示框
默認情況下,Android WebView是不支持js的Alert(),Confirm(),Prompt()函數的彈出提示框的.即使設置了setJavaScriptEnabled(true);也是沒用的.那麼,如何才能讓WebView可以支持js的這3個函數呢.可以通過設置WebChromeClient對象來完成.WebChromeClient主要輔助WebView處理Javascript的對話框、網站圖標、網站title、載入進度等等.
這里主要重寫WebChromeClient的3個方法:
onJsAlert :警告框(WebView上alert無效,需要定製WebChromeClient處理彈出)
onJsPrompt : 提示框.
onJsConfirm : 確定框.
效果圖分別為:
1.Alert
2.Prompt
3.Confirm
先來看看js的頁面代碼:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<script type="text/javascript">
function call(){
var value = document.getElementById("input").value;
alert(value);
}
//警告
function onAlert(){
alert("This is a alert sample from html");
}
//確定
function onConfirm(){
var b = confirm("are you sure to login?");
alert("your choice is "+b);
}
//提示
function onPrompt(){
var b = prompt("please input your password","aaa");
alert("your input is "+b);
}
</script>
</head>
<body>
<input type="text" id="input" value="default"/>
<button onclick=call()>點我彈出Alert</button></br>
<input type="button" value="alert" onclick="onAlert()"/></br>
<input type="button" value="confirm" onclick="onConfirm()"/></br>
<input type="button" value="prompt" onclick="onPrompt()"/></br>
</body>
</html>
Android代碼:
package com.example.chenys.webviewdemo;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.EditText;
import android.widget.TextView;
/**
* Created by mChenys on 2015/11/19.
*/
public class TestAlertActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webView = new WebView(this);
setContentView(webView);
webView.requestFocus();
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);//啟用支持js
//設置響應js 的Alert()函數
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
AlertDialog.Builder b = new AlertDialog.Builder(TestAlertActivity.this);
b.setTitle("Alert");
b.setMessage(message);
b.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
});
b.setCancelable(false);
b.create().show();
return true;
}
//設置響應js 的Confirm()函數
@Override
public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
AlertDialog.Builder b = new AlertDialog.Builder(TestAlertActivity.this);
b.setTitle("Confirm");
b.setMessage(message);
b.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
});
b.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
});
b.create().show();
return true;
}
//設置響應js 的Prompt()函數
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, final JsPromptResult result) {
final View v = View.inflate(TestAlertActivity.this, R.layout.prompt_dialog, null);
((TextView) v.findViewById(R.id.prompt_message_text)).setText(message);
((EditText) v.findViewById(R.id.prompt_input_field)).setText(defaultValue);
AlertDialog.Builder b = new AlertDialog.Builder(TestAlertActivity.this);
b.setTitle("Prompt");
b.setView(v);
b.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String value = ((EditText) v.findViewById(R.id.prompt_input_field)).getText().toString();
result.confirm(value);
}
});
b.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
});
b.create().show();
return true;
}
});
webView.loadUrl("file:///android_asset/index3.html");
}
}
有2個需要注意的:
1.重寫onJsPrompt 方法,需要我們自定一個提示的布局文件,如下:prompt_dialog.xml
就是一個提示的TextView和輸入文本的EditTex而已.
[html] view plain
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/prompt_message_text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/prompt_input_field"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minWidth="250dp"
android:selectAllOnFocus="true"
android:scrollHorizontally="true"/>
</LinearLayout>
2.WebView需要支持js的話,要記得加啟用js的支持.
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
㈡ YS Web Vol.265 時東ぁみ 密碼是多少啊~~~~
1.WINZIP壓縮文件的解開
針對WINZIP壓縮文件,黑黑最常使用的工具就是Elcomsoft公司的「Advanced ZIP Password Recovery」(簡稱AZPR),AZPR提供了一個圖形化的用戶界面,黑客經過幾個簡單的步驟就可以破解ZIP壓縮文件包的密碼。
第一步:配置解開工具
首先在「ZIP password-encrypted file」打開被加密的ZIP壓縮文件包,可以利用瀏覽按鈕或者功能鍵F3來選擇將要解開的壓縮文件包;在「Type of attack」中選擇攻擊方式:包括「Brute-force」(強攻)、「mask」(掩碼搜索)、「Dictionary」(字典攻ji)等;在「Brute-force range options」設定強攻法的搜索范圍,如果用戶了解口令的組合特點,通過設定以下選擇可以大大縮短搜索時間;在「Start from」中 ,當用戶知道口令的起始字元序列時,可以設定該選項。例如,當用戶知道口令全部使用小寫字母,長度是5,並且以字母「k」開頭,那麼可以在該項填寫「kaaaa」,AZPR將從這個口令開始依次向後搜索所有的可能密碼;在「Password length」中可以設定口令長度,這也是一個決定搜索時間的重要選項; 「Auto-save」:自動存儲選項的功能是定期自動保存軟體當前設置與當前工作狀態,這些關鍵參數將會定期自動保存在一個名為「~azpr.ini」,用戶可以自行指定保存參數的文件名、自動保存的時間間隔等等,該選項使得用戶能夠繼續上次中斷的解密進程。
第二步:開始解開
經過以上幾個關鍵的選項的設置,黑黑就可以開始/破/解/你的ZIP文件了,點擊「Start」按鈕即可進行/解/密/運算,由於AZPR有以上保存參數和狀態的功能,用戶隨時可以中斷或者繼續運算過程。當密碼找到後,用戶會在結果窗口中看到密碼內容、試探密碼總數、破解消耗時間、平均運算速度等信息。如果沒有找到密碼,也會有相應的提示信息。
2.WINRAR壓縮文件的/破/解/
針對WINRAR壓縮文件,Elcomsoft公司也推出了「Advanced RAR Password Recovery」,該軟體/解/密/速度很快,可以幫你找回RAR文件的密碼,注冊後可以解開多達128位密碼。它提供有預估算出密碼所需要的時間;可中斷計算與恢復繼續前次的計算。然而到/黑/客/手裡也就變成了一個/破/解/的工具,其具體使用方法與「Advanced ZIP Password Recovery」大致相同,這里不多介紹了。
3. 當心「多功能密碼/破/解/軟體」作祟
此外,目前還有一款名為「多功能密碼/破/解/軟體」的工具值得大家注意,也是/黑/客/經常使用的。該軟體可以/破/解/Access97/2000/xp密碼,Word/Excel97/2000/xp、QQ(本地和在線)、SQLSERVER(本地和遠程)、windows98登陸密碼、ZIP/RAR文件密碼,星號密碼察看,可以察看任何顯示為*的密碼內容(網頁除外)。ZIP/RAR文件密碼也難逃該軟體一「劫」!下面看看/黑/客/到底是如何利用這個工具興風作浪的。
/黑/客/安裝並運行該軟體,切換到「ZIP/RAR」選項
點擊「瀏覽」按鈕找到本地硬碟上要破解的ZIP/RAR文件,然後需要進行以下的設置:
(1)「/破/解/位數設置」:你可以設置好密碼最小長度和密碼最大長度。
(2)「/破/解/字元設置」:你可以選擇是用數字、小寫字母、大寫字母中一個或者多個,這需要根據設置的壓縮包的密碼來進行選擇,當然,如果都選的話,那麼/破/解/的速度肯定更慢,花費的時間也更長。
設置完畢後,點擊「開始」按鈕即可進行/破/解/,經過一段時間的/破/解/後,最後在「進度」框中顯示/破/解/的密碼,