當前位置:首頁 » 網頁前端 » 手機webdialog
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

手機webdialog

發布時間: 2022-06-07 17:00:18

『壹』 如何用webview實現彈出頁面

public class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult jsResult) {
final JsResult finalJsResult = jsResult;
new AlertDialog.Builder(view.getContext()).setMessage(message).setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finalJsResult.confirm();
}
}).setCancelable(false).create().show();
return true;
}
}

and add this to your webview:
MyWebChromeClient myWebChromeClient = new MyWebChromeClient();
webView.setWebChromeClient(myWebChromeClient);

Then you can add custom webview in your AlertDialog (to replace the AlertDialog above):
public OnClickListener = new OnClickListener() {
public void onClick(View v) {

LayoutInflater inflater = LayoutInflater.from(MyActivity.this);
View alertDialogView = inflater.inflate(R.layout.alert_dialog_layout, null);
WebView myWebView = (WebView) findViewById(R.id.DialogWebView);
myWebView.loadData(webContent, "text/html", "utf-8");
AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this);
builder.setView(alertDialogView);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}).show();
}
};

『貳』 Android系統 WebView是什麼有什麼用

現在越來越多的APP都內置了Web網頁去載入視圖,也就是我們常說的Hybrid APP混合應用,市場上很多平台都是這樣做的,比如我們經常使用的淘寶、京東等電商平台。這些是如何實現的呢?在我們Android中有一個WebView組件,它就可以實現此類功能。它是Android中的原生UI控制項,主要用於在APP應用中方便地訪問遠程網頁或本地HTML資源,同時WebView也在Android中充當Java代碼和JS代碼之間交互的橋梁,實際上也可以將WebView看做一個功能最小化的瀏覽器。下面我們一起來看看WebView的一些常用的使用方法。

WebView是Android系統提供的一個能顯示網頁的系統控制項,它是一個特殊的View,同時也是一個ViewGroup,可以有很多其他子View。在Android 4.4以下(不包含4.4)系統WebView底層實現是採用WebKit內核,而在Android 4.4及其以上Google採用了Chromium內核作為系統WebView的底層內核支持。在這一變化中Android提供的WebView相關API並沒有發生較大變化,在4.4上也兼容低版本的API並且引進了少部分API。這里簡單介紹下基於Chromium的WebView和基於WebKit的WebView之間的差異,基於Chromium的Webview提供了更廣的HTML5、CSS3、JavaScript支持,在Android系統版本5.0上基於Chromium 37,WebView提供了絕大多數的HTML5特性支持,除此之外Chromium也支持遠程調試(Chrome DevTools)。WebKit JavaScript引起採用WebCore JavaScript在Android 4.4上換成了V8能直接提升JavaScript性能。

二、作用
1、顯示和渲染Web頁面
2、使用html文件(網路上或本地assets中)作為布局
3、可與JavaScript交互調用
註: WebView控制項功能強大,除了具有一般View的屬性和設置外,還可以對Url請求、頁面載入、渲染、頁面交互進行強大的處理。

『叄』 Web自動化中,怎麼才能處理彈出的模態對話框

如何為webbrowser中彈出的模態網頁對話框添加自動化方法?
我用CDHtmlDialog做基類,做了一個簡單瀏覽器,通過以下幾步,添加了自動化方法MyFunc

C/C++ code
///////////////////////////////////////////1、類聲明文件中添加DECLARE_DISPATCH_MAP()添加響應函數聲明,如void MyFunc(char* sURL);重載CanAccessExternalvirtual BOOL CanAccessExternal();2、構造函數添加EnableAutomation();初始化添加SetExternalDispatch(GetIDispatch(TRUE));消息映射添加BEGIN_DISPATCH_MAP(CDlgIE, CDHtmlDialog) //彈出窗口介面 DISP_FUNCTION(CDlgIETooltip, "MyFunc", MyFunc, VT_EMPTY, VTS_BSTR) // example: // DISP_FUNCTION(CMyDHTMLDialog,"Func2",TestFunc,VT_BOOL,VTS_BSTR VTS_I4 VTS_I4) // ^return, ^parameters type listEND_DISPATCH_MAP()實現CanAccessExternal重載BOOL CDlgIE::CanAccessExternal(){ return TRUE;}最後實現響應函數MyFunc////////////////////////////////////////////////////////////////////

這樣,在網頁中就可以使用external.MyFunc("參數")來調用我的瀏覽器提供的方法
現在問題是,如果網頁中用showModalDialog彈出一個網頁對話框,在網頁對話框中就無法調用external.MyFunc方法
一種解決方案是將window在showModalDialog時傳入,然後在對話框中調父頁面的方法,但是我的頁面有時是跨域的,無法取到父頁面的window。
所以現在想最好能把網頁對話框的webbrowser控制項也加入我自定義的交互函數,想了很久,也找了很久,沒有找到解決方案,想請各位幫幫忙,謝謝。
現在可以用hook得到網頁對話框的窗口消息,但不知該如何給webbrowser加網頁的消息映射

『肆』 web開發,如何能做到給對話框dialog中的title屬性動態賦值

用js 操作Dom,感覺應該是可以的。

『伍』 Android WebView 在開發過程中有哪些坑

首先webview可以載入兩種:1.帶標簽的富文本;2.網頁地址。

1、載入富文本:

webView.loadDataWithBaseURL(null,html,"text/html","utf-8",null); 其中,加粗的地方是服務端返回的String類型的富文本,"text/html"是轉換類型,utf-8是編碼格式,其他的放null就行了,可以查下這個方法,在這就不多說了。

2、載入網頁:

簡單載入的話,一般直接webView.loadUrl(url);就可以了,url就是網頁地址。當然一般的網頁還需要支持JS,對Android來說,就是需要加一句代碼:

WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);

有的時候,需要顯示載入網頁時的進度條,還有的時候,在網頁中有一個鏈接地址可以點擊,在不同的情況選擇在你的WebView中打開還是在瀏覽器中打開:

webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).equals(www..com)) {//當某種情況,在WebView中打開
webView.loadUrl(url);

return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));//在瀏覽器中打開
startActivity(intent);
return true;

}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {//開始載入 super.onPageStarted(view, url, favicon);
pDialog.show();//顯示進度條
}

@Override
public void onPageFinished(WebView view, String url) {//載入完成
super.onPageFinished(view, url);
pDialog.hide();//隱藏進度條
}

@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {//載入失敗
super.onReceivedError(view, request, error);
pDialog.hide();//隱藏進度條
}
});

恩。。能想到就這么多了~謝謝

『陸』 為什麼把WebView偽裝成dialog後滑動卡頓

當滑動圖片的時候ViewPager設置他的onTouch返回true
即(true)那麼滑動圖片ViewPager就不能動了
反之同理。

『柒』 如何設置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);

『捌』 android中 如何清理webview緩存

一、清除cookie

public static void clearCookies(Context context) {
// Edge case: an illegal state exception is thrown if an instance of
// CookieSyncManager has not be created. CookieSyncManager is normally
// created by a WebKit view, but this might happen if you start the
// app, restore saved state, and click logout before running a UI
// dialog in a WebView -- in which case the app crashes
@SuppressWarnings("unused")
CookieSyncManager cookieSyncMngr =
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
}

這是facebook sdk的源碼,我不知道第一句到底起了什麼作用?

二、清除webview緩存,查看root過的手機data下的文件,會發現有這個東西:webview命名的東西

刪除保存於手機上的緩存.

// clear the cache before time numDays
private int clearCacheFolder(File dir, long numDays) {
int deletedFiles = 0;
if (dir!= null && dir.isDirectory()) {
try {
for (File child:dir.listFiles()) {
if (child.isDirectory()) {
deletedFiles += clearCacheFolder(child, numDays);
}
if (child.lastModified() < numDays) {
if (child.delete()) {
deletedFiles++;
}
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
return deletedFiles;
}

打開關閉使用緩存
//優先使用緩存:
WebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

//不使用緩存:
WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

在退出應用的時候加上如下代碼
File file = CacheManager.getCacheFileBaseDir();
if (file != null && file.exists() && file.isDirectory()) {
for (File item : file.listFiles()) {
item.delete();
}
file.delete();
}

context.deleteDatabase("webview.db");
context.deleteDatabase("webviewCache.db");

發現這個問題,一個朋友在iteye上問的:

Android的CookieManager只提供了removeAllCookies方法,用來刪除所有的cookie,有什麼辦法只刪除和特定url關聯的cookie呢?本來打算使用setCookie(url, value)將指定url關聯的cookie設為空串,但試了一下發現這個方法只是在已有的基礎上繼續添加cookie,並不能重置已有的cookie。

有朋友給打答案:

/**
* 同步一下cookie
*/
public static void synCookies(Context context, String url) {
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();//移除
cookieManager.setCookie(url, cookies);//指定要修改的cookies
CookieSyncManager.getInstance().sync();
}

『玖』 android 自定義dialog 如何顯示gif圖片

在dialog顯示gif圖片 由於dialog不容易取到裡面空間對象,推薦使用透明樣式的activity,只需把該activity的樣式設置為透明樣式 即android:theme="@android:style/Theme.Translucent",同時在oncreat()方法的setcontenview()之前設置requestWindowFeature(Window.FEATURE_NO_TITLE);去掉標題. 播放gif圖片 由於android控制項不支持播放gif 推薦使用webview 裡面放入html中含有img標簽 src便是圖片的地址 可以使網路地址 也可以是本地地址 然後webview載入該html即實現了播放

『拾』 android webview jquery ui中的dialog效果顯示不了是什麼回事

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Dialog - Default functionality</title>
<link rel="stylesheet" href="../../themes/base/all.css">
<script src="../../external/jquery/jquery.js"></script>
<script src="../../ui/core.js"></script>
<script src="../../ui/widget.js"></script>
<script src="../../ui/mouse.js"></script>
<script src="../../ui/draggable.js"></script>
<script src="../../ui/position.js"></script>
<script src="../../ui/resizable.js"></script>
<script src="../../ui/button.js"></script>
<script src="../../ui/dialog.js"></script>
<link rel="stylesheet" href="../demos.css">
<script>
$(function() {
$( "#dialog" ).dialog();
});
</script>
</head>
<body>

<div id="dialog" title="Basic dialog">
<p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
</div>

<div class="demo-description">
<p>The basic dialog window is an overlay positioned within the viewport and is protected from page content (like select elements) shining through with an iframe. It has a title bar and a content area, and can be moved, resized and closed with the 'x' icon by default.</p>
</div>
</body>
</html>