国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js關(guān)閉當(dāng)前頁面(支付寶,微信,app)

Freeman / 2509人閱讀

摘要:以下是項(xiàng)目中用到的具體代碼方法返回的是對(duì)象返回的是必須將返回的對(duì)象轉(zhuǎn)成字符串微信支付寶安卓

使用js 關(guān)閉當(dāng)前頁面 , 一般想到的都是 window.close() , 但是該方法只能關(guān)閉通過 window.open() 打開的頁面

所以針對(duì)這種情況 , 只能分情況去解決 .

在微信 , 支付寶 , app 中打開外部鏈接 , 都是使用webview打開頁面的 , 所以需要app提供映射方法 .

對(duì)于微信 , 支付寶 , 我們能通過開放平臺(tái)找到對(duì)應(yīng)的方法.

微信:

window.WeixinJSBridge.call("closeWindow")

支付寶:

window.AlipayJSBridge.call("closeWebview")

對(duì)應(yīng)一般的app ,需要開發(fā)者封裝可以讓js調(diào)用的方法 . (以下就是js 和 app的交互方法)

Javascript調(diào)用Java方法

以Android的Toast的為例,下面看下如何從Javascript代碼中調(diào)用系統(tǒng)的Toast。
先定義一個(gè)AndroidToast的Java類,它有一個(gè)show的方法用來顯示Toast:

public class AndroidToast {
@JavascriptInterface
public void show(String str) {
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}
}

再對(duì)WebView進(jìn)行設(shè)置,開啟JavaScipt,注冊(cè)JavascriptInterface的方法:

private void initView() {
webView = (WebView) findViewById(R.id.webView);

WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDefaultTextEncodingName("UTF-8");
webView.addJavascriptInterface(new AndroidToast(), "AndroidToast");
webView.loadUrl("file:///android_asset/index.html");
}

addJavascriptInterface的作用是把AndroidToast類映射為Javascript中的AndroidToast。這樣就可以在JavaScript中調(diào)用Java中的方法了。
在Javascript中調(diào)用Java代碼:

function toastClick(){
window.AndroidToast.show("from js");
}

通過window屬性可以找到映射的對(duì)象AndroidToast,直接調(diào)用它的show方法即可。
注意這里傳輸?shù)臄?shù)據(jù)只能是基本數(shù)據(jù)類型和string,可以傳輸string就意味著可以使用json傳輸結(jié)構(gòu)化數(shù)據(jù)。
這里調(diào)用的方法并沒有返回值,如果需要在JavaScript中需要得到返回值怎么辦呢?JavaScript調(diào)用Java有返回值
如果想從Javascript調(diào)的方法里面獲取到返回值,只需要定義一個(gè)帶返回值的@JavascriptInterface方法即可:

public class AndroidMessage {
@JavascriptInterface
public String getMsg() {
return "form java";
}
}

添加Javascript的映射:
webView.addJavascriptInterface(new AndroidMessage(), "AndroidMessage");
在JavaScript直接調(diào)用:

function showAlert(){
var str=window.AndroidMessage.getMsg();
console.log(str);
}

這樣就完成了有返回值的方法調(diào)用。還有一種場(chǎng)景是,在Java中主動(dòng)觸發(fā)JavaScript方法,就需要在Java中調(diào)用JavaScript方法了。Java調(diào)用JavaScript方法

Java在調(diào)用JavaScript方法的時(shí)候,需要使用WebView.loadUrl()方法,它可以直接在頁面里執(zhí)行JavaScript方法。
首先定義一個(gè)JavaScript方法給Java調(diào)用:

function callFromJava(str){
console.log(str);
}

在Java中直接調(diào)用該方法:

public void javaCallJS(){
webView.loadUrl("javascript:callFromJava("call from java")");
}

可以在loadUrl中給Javascript方法直接傳參,如果JavaScript方法有返回值,使用WebView.loadUrl()是無法獲取到返回值的,需要JavaScript返回值給Java的話,可以定義一個(gè)Java方法提供給JavaScript調(diào)用,然后Java調(diào)用JavaScript之后,JavaScript觸發(fā)該方法把返回值再傳遞給Java。
注意WebView.loadUrl()必須在Ui線程中運(yùn)行,不然會(huì)會(huì)報(bào)錯(cuò)。

以下是項(xiàng)目中用到的具體代碼:

var isLppzApp = false
var ua = navigator.userAgent.toLowerCase()
var uaApp = ua ? ua.match(/BeStore/i) : "" // match方法返回的是對(duì)象
var uaAndroid = /android/i.test(ua) // test返回的是true/false
var uaIos = /iphone|ipad|ipod/i.test(ua)
if (uaApp.toString() === "bestore") { // 必須將match返回的對(duì)象轉(zhuǎn)成字符串
isLppzApp = true
} else {
isLppzApp = false
}
if (window.WeixinJSBridge) {
window.WeixinJSBridge.call("closeWindow") // 微信
} else if (window.AlipayJSBridge) {
window.AlipayJSBridge.call("closeWebview") // 支付寶
} else if (isLppzApp && uaAndroid) {
window.obj.closePageLppzRequest("") // 安卓app
} else if (isLppzApp && uaIos) {
window.webkit.messageHandlers.closePageLppzRequest.postMessage("") //ios app
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/101639.html

相關(guān)文章

  • java實(shí)現(xiàn)沙箱測(cè)試環(huán)境支付支付(demo)和整合微信支付支付支付到ssm環(huán)境全過程(附源碼)

    摘要:設(shè)置和其中密鑰需要自己生成,和支付寶網(wǎng)關(guān)是已經(jīng)給好的,網(wǎng)關(guān)有字樣,表明是用于開發(fā)測(cè)試。上面就是將阿里支付寶支付整合到的全過程了,如果還有什么疑問,可以留言或者私信我源代碼下載鏈接密碼 文章有不當(dāng)之處,歡迎指正,如果喜歡微信閱讀,你也可以關(guān)注我的微信公眾號(hào):好好學(xué)java,獲取優(yōu)質(zhì)學(xué)習(xí)資源。 一、支付寶測(cè)試環(huán)境代碼測(cè)試 1.下載電腦網(wǎng)站的官方demo: 下載地址:https://docs...

    channg 評(píng)論0 收藏0
  • 開源!js實(shí)現(xiàn)微信/QQ直接跳轉(zhuǎn)到支付APP打開口令領(lǐng)紅包!附:demo

    摘要:最近支付寶的領(lǐng)紅包可真是刷爆了各個(gè)微信群啊,滿群都是支付寶口令。下午實(shí)現(xiàn)跳轉(zhuǎn)到支付寶并領(lǐng)取紅包附動(dòng)圖跳轉(zhuǎn)速度也很快。目前先跳到瀏覽器再詢問是否要打開支付寶。 最近支付寶的領(lǐng)紅包可真是刷爆了各個(gè)微信群啊,滿群都是支付寶口令。 showImg(https://segmentfault.com/img/bV1rgL?w=750&h=1334); 可是這樣推廣可不是辦法,又要復(fù)制又要打開支付寶...

    RaoMeng 評(píng)論0 收藏0
  • 開源!js實(shí)現(xiàn)微信/QQ直接跳轉(zhuǎn)到支付APP打開口令領(lǐng)紅包!附:demo

    摘要:最近支付寶的領(lǐng)紅包可真是刷爆了各個(gè)微信群啊,滿群都是支付寶口令。下午實(shí)現(xiàn)跳轉(zhuǎn)到支付寶并領(lǐng)取紅包附動(dòng)圖跳轉(zhuǎn)速度也很快。目前先跳到瀏覽器再詢問是否要打開支付寶。 最近支付寶的領(lǐng)紅包可真是刷爆了各個(gè)微信群啊,滿群都是支付寶口令。 showImg(https://segmentfault.com/img/bV1rgL?w=750&h=1334); 可是這樣推廣可不是辦法,又要復(fù)制又要打開支付寶...

    nevermind 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Freeman

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<