国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Uniapp中App與H5交互

這篇具有很好參考價(jià)值的文章主要介紹了Uniapp中App與H5交互。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Uniapp開(kāi)發(fā)的App要與Uniapp開(kāi)發(fā)的H5進(jìn)行交互?

Uniapp進(jìn)行數(shù)據(jù)交互的話(huà)是使用了Unaipp官方文檔當(dāng)中的web-view,但是官方文檔當(dāng)中的說(shuō)明也不是很通俗易懂,之后就去網(wǎng)上找了好久,也試了很多次,終于實(shí)現(xiàn)了App與H5的交互。

web-view

首先呢web-view是一個(gè) web 瀏覽器組件,可以用來(lái)承載網(wǎng)頁(yè)的容器,會(huì)自動(dòng)鋪滿(mǎn)整個(gè)頁(yè)面,nvue 使用需要手動(dòng)指定寬高。在web-view中的src當(dāng)中放入H5頁(yè)面的鏈接即可。
各小程序平臺(tái),web-view 加載的 url 需要在后臺(tái)配置域名白名單,包括內(nèi)部再次 iframe 內(nèi)嵌的其他 url 以下是官方文檔當(dāng)中的代碼片段,官網(wǎng)鏈接:(web-view | uni-app官網(wǎng) (dcloud.net.cn))

<template>
?? ?<view>
?? ??? ?<web-view :webview-styles="webviewStyles" src="https://uniapp.dcloud.io/static/web-view.html"></web-view>
?? ?</view>
</template>

<script>
?? ?export default {
?? ??? ?data() {
?? ??? ??? ?return {
?? ??? ??? ??? ?webviewStyles: {
?? ??? ??? ??? ??? ?progress: {
?? ??? ??? ??? ??? ??? ?color: '#FF3333'
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ?}
</script>

<style>

</style>
?

在Uniapp當(dāng)中呢,uni.postMessage是用來(lái)接收H5傳來(lái)的數(shù)據(jù)的,這個(gè)可以查看Uniapp官方文檔自行解決,而在交互當(dāng)中讓我們?yōu)殡y的無(wú)非就是H5如何向App傳遞數(shù)據(jù)和接受App傳來(lái)的數(shù)據(jù)以及App如何向H5傳遞數(shù)據(jù)

H5向App傳遞數(shù)據(jù)

在uniapp項(xiàng)目下的static中新建一個(gè)uni_webview.js然后將下面的代碼復(fù)制進(jìn)去

! function(e, n) {
?? ?"object" == typeof exports && "undefined" != typeof module ? module.exports = n() : "function" == typeof define &&
?? ??? ?define.amd ? define(n) : (e = e || self).uni = n()
}(this, (function() {
?? ?"use strict";
?? ?try {
?? ??? ?var e = {};
?? ??? ?Object.defineProperty(e, "passive", {
?? ??? ??? ?get: function() {
?? ??? ??? ??? ?!0
?? ??? ??? ?}
?? ??? ?}), window.addEventListener("test-passive", null, e)
?? ?} catch (e) {}
?? ?var n = Object.prototype.hasOwnProperty;

?? ?function t(e, t) {
?? ??? ?return n.call(e, t)
?? ?}
?? ?var i = [],
?? ??? ?a = function(e, n) {
?? ??? ??? ?var t = {
?? ??? ??? ??? ?options: {
?? ??? ??? ??? ??? ?timestamp: +new Date
?? ??? ??? ??? ?},
?? ??? ??? ??? ?name: e,
?? ??? ??? ??? ?arg: n
?? ??? ??? ?};
?? ??? ??? ?if (window.__dcloud_weex_postMessage || window.__dcloud_weex_) {
?? ??? ??? ??? ?if ("postMessage" === e) {
?? ??? ??? ??? ??? ?var a = {
?? ??? ??? ??? ??? ??? ?data: [n]
?? ??? ??? ??? ??? ?};
?? ??? ??? ??? ??? ?return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(a) : window
?? ??? ??? ??? ??? ??? ?.__dcloud_weex_.postMessage(JSON.stringify(a))
?? ??? ??? ??? ?}
?? ??? ??? ??? ?var o = {
?? ??? ??? ??? ??? ?type: "WEB_INVOKE_APPSERVICE",
?? ??? ??? ??? ??? ?args: {
?? ??? ??? ??? ??? ??? ?data: t,
?? ??? ??? ??? ??? ??? ?webviewIds: i
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?};
?? ??? ??? ??? ?window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessageToService(o) : window
?? ??? ??? ??? ??? ?.__dcloud_weex_.postMessageToService(JSON.stringify(o))
?? ??? ??? ?}
?? ??? ??? ?if (!window.plus) return window.parent.postMessage({
?? ??? ??? ??? ?type: "WEB_INVOKE_APPSERVICE",
?? ??? ??? ??? ?data: t,
?? ??? ??? ??? ?pageId: ""
?? ??? ??? ?}, "*");
?? ??? ??? ?if (0 === i.length) {
?? ??? ??? ??? ?var r = plus.webview.currentWebview();
?? ??? ??? ??? ?if (!r) throw new Error("plus.webview.currentWebview() is undefined");
?? ??? ??? ??? ?var d = r.parent(),
?? ??? ??? ??? ??? ?s = "";
?? ??? ??? ??? ?s = d ? d.id : r.id, i.push(s)
?? ??? ??? ?}
?? ??? ??? ?if (plus.webview.getWebviewById("__uniapp__service")) plus.webview.postMessageToUniNView({
?? ??? ??? ??? ?type: "WEB_INVOKE_APPSERVICE",
?? ??? ??? ??? ?args: {
?? ??? ??? ??? ??? ?data: t,
?? ??? ??? ??? ??? ?webviewIds: i
?? ??? ??? ??? ?}
?? ??? ??? ?}, "__uniapp__service");
?? ??? ??? ?else {
?? ??? ??? ??? ?var w = JSON.stringify(t);
?? ??? ??? ??? ?plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat(
?? ??? ??? ??? ??? ?"WEB_INVOKE_APPSERVICE", '",').concat(w, ",").concat(JSON.stringify(i), ");"))
?? ??? ??? ?}
?? ??? ?},
?? ??? ?o = {
?? ??? ??? ?navigateTo: function() {
?? ??? ??? ??? ?var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
?? ??? ??? ??? ??? ?n = e.url;
?? ??? ??? ??? ?a("navigateTo", {
?? ??? ??? ??? ??? ?url: encodeURI(n)
?? ??? ??? ??? ?})
?? ??? ??? ?},
?? ??? ??? ?navigateBack: function() {
?? ??? ??? ??? ?var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
?? ??? ??? ??? ??? ?n = e.delta;
?? ??? ??? ??? ?a("navigateBack", {
?? ??? ??? ??? ??? ?delta: parseInt(n) || 1
?? ??? ??? ??? ?})
?? ??? ??? ?},
?? ??? ??? ?switchTab: function() {
?? ??? ??? ??? ?var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
?? ??? ??? ??? ??? ?n = e.url;
?? ??? ??? ??? ?a("switchTab", {
?? ??? ??? ??? ??? ?url: encodeURI(n)
?? ??? ??? ??? ?})
?? ??? ??? ?},
?? ??? ??? ?reLaunch: function() {
?? ??? ??? ??? ?var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
?? ??? ??? ??? ??? ?n = e.url;
?? ??? ??? ??? ?a("reLaunch", {
?? ??? ??? ??? ??? ?url: encodeURI(n)
?? ??? ??? ??? ?})
?? ??? ??? ?},
?? ??? ??? ?redirectTo: function() {
?? ??? ??? ??? ?var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
?? ??? ??? ??? ??? ?n = e.url;
?? ??? ??? ??? ?a("redirectTo", {
?? ??? ??? ??? ??? ?url: encodeURI(n)
?? ??? ??? ??? ?})
?? ??? ??? ?},
?? ??? ??? ?getEnv: function(e) {
?? ??? ??? ??? ?window.plus ? e({
?? ??? ??? ??? ??? ?plus: !0
?? ??? ??? ??? ?}) : e({
?? ??? ??? ??? ??? ?h5: !0
?? ??? ??? ??? ?})
?? ??? ??? ?},
?? ??? ??? ?postMessage: function() {
?? ??? ??? ??? ?var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
?? ??? ??? ??? ?a("postMessage", e.data || {})
?? ??? ??? ?}
?? ??? ?},
?? ??? ?r = /uni-app/i.test(navigator.userAgent),
?? ??? ?d = /Html5Plus/i.test(navigator.userAgent),
?? ??? ?s = /complete|loaded|interactive/;
?? ?var w = window.my && navigator.userAgent.indexOf("AlipayClient") > -1;
?? ?var u = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent);
?? ?var c = window.qq && window.qq.miniProgram && /QQ/i.test(navigator.userAgent) && /miniProgram/i.test(
?? ??? ?navigator.userAgent);
?? ?var g = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent);
?? ?var v = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i
?? ??? ?.test(navigator.userAgent);
?? ?var p = window.qa && /quickapp/i.test(navigator.userAgent);
?? ?for (var l, _ = function() {
?? ??? ??? ?window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady", {
?? ??? ??? ??? ?bubbles: !0,
?? ??? ??? ??? ?cancelable: !0
?? ??? ??? ?}))
?? ??? ?}, f = [function(e) {
?? ??? ??? ?if (r || d) return window.__dcloud_weex_postMessage || window.__dcloud_weex_ ? document
?? ??? ??? ??? ?.addEventListener("DOMContentLoaded", e) : window.plus && s.test(document
?? ??? ??? ??? ??? ?.readyState) ? setTimeout(e, 0) : document.addEventListener("plusready", e), o
?? ??? ?}, function(e) {
?? ??? ??? ?if (v) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) :
?? ??? ??? ??? ?document.addEventListener("WeixinJSBridgeReady", e), window.wx.miniProgram
?? ??? ?}, function(e) {
?? ??? ??? ?if (c) return window.QQJSBridge && window.QQJSBridge.invoke ? setTimeout(e, 0) : document
?? ??? ??? ??? ?.addEventListener("QQJSBridgeReady", e), window.qq.miniProgram
?? ??? ?}, function(e) {
?? ??? ??? ?if (w) {
?? ??? ??? ??? ?document.addEventListener("DOMContentLoaded", e);
?? ??? ??? ??? ?var n = window.my;
?? ??? ??? ??? ?return {
?? ??? ??? ??? ??? ?navigateTo: n.navigateTo,
?? ??? ??? ??? ??? ?navigateBack: n.navigateBack,
?? ??? ??? ??? ??? ?switchTab: n.switchTab,
?? ??? ??? ??? ??? ?reLaunch: n.reLaunch,
?? ??? ??? ??? ??? ?redirectTo: n.redirectTo,
?? ??? ??? ??? ??? ?postMessage: n.postMessage,
?? ??? ??? ??? ??? ?getEnv: n.getEnv
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}, function(e) {
?? ??? ??? ?if (u) return document.addEventListener("DOMContentLoaded", e), window.swan.webView
?? ??? ?}, function(e) {
?? ??? ??? ?if (g) return document.addEventListener("DOMContentLoaded", e), window.tt.miniProgram
?? ??? ?}, function(e) {
?? ??? ??? ?if (p) {
?? ??? ??? ??? ?window.QaJSBridge && window.QaJSBridge.invoke ? setTimeout(e, 0) : document
?? ??? ??? ??? ??? ?.addEventListener("QaJSBridgeReady", e);
?? ??? ??? ??? ?var n = window.qa;
?? ??? ??? ??? ?return {
?? ??? ??? ??? ??? ?navigateTo: n.navigateTo,
?? ??? ??? ??? ??? ?navigateBack: n.navigateBack,
?? ??? ??? ??? ??? ?switchTab: n.switchTab,
?? ??? ??? ??? ??? ?reLaunch: n.reLaunch,
?? ??? ??? ??? ??? ?redirectTo: n.redirectTo,
?? ??? ??? ??? ??? ?postMessage: n.postMessage,
?? ??? ??? ??? ??? ?getEnv: n.getEnv
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}, function(e) {
?? ??? ??? ?return document.addEventListener("DOMContentLoaded", e), o
?? ??? ?}], m = 0; m < f.length && !(l = f[m](_)); m++);
?? ?l || (l = {});
?? ?var E = "undefined" != typeof uni ? uni : {};
?? ?if (!E.navigateTo)
?? ??? ?for (var b in l) t(l, b) && (E[b] = l[b]);
?? ?return E.webView = l, E
}));

然后再在main.js當(dāng)中全局引入這個(gè)js文件

import * as uni from '@/static/uni_webview.js'

document.addEventListener("UniAppJSBridgeReady", function(e) {
?? ?console.log(e)
?? ?Vue.prototype.myUni = uni
});

之后我們就可以在頁(yè)面當(dāng)中去使用它來(lái)實(shí)現(xiàn)數(shù)據(jù)交互了~

<template>
?? ?<view>
? ? ? ? ? ? <button @click="post">H5向App傳遞數(shù)據(jù)</button>
?? ?</view>
</template>

<script>
export default {
? ? data() {
? ? ? ? return {
?? ??? ??? ??? ?
? ? ? ? ? ? ? ?}
?? ? ? },
? ? ? ? ? ?onLoad(){
? ? ? ? ? ? ? ?this.get()
? ? ? ? ? ?},
? ? ? ? ? methods:{
? ? ? ? ? ? ? ? post(){
? ? ? ? ? ? ? ? ? ? ?this.myUni.webView.postMessage({
? ? ? ? ? ? ? ? ? ? ? ? ? //data當(dāng)中是H5向App的傳遞數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? ? ? ? data: {},
?? ??? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? get(){
? ? ? ? ? ? ? ? ? ? ? ? 接收app傳遞來(lái)的數(shù)據(jù)
?? ??? ??? ??? ?window.postJS = function(msg) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //msg是App傳遞過(guò)來(lái)的數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log(msg)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? }
}
</script>

<style>

</style>??文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-720607.html

到了這里,關(guān)于Uniapp中App與H5交互的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • uniapp webview交互以及h5傳參到app

    app端,onPostMessage在nvue頁(yè)面下接受參數(shù),message在vue頁(yè)面下接受參數(shù) 鏈接后拼接傳參,只在一開(kāi)始能傳 方法傳參 H5端,我這是用vue2寫(xiě)的 在index.html頁(yè)面加上這個(gè) 在首頁(yè)接受參數(shù) 往APP傳參 接受APP的方法傳參,變量跟data里面的變量綁定

    2024年02月16日
    瀏覽(30)
  • uniapp webview h5和app交互通信傳參

    app端,onPostMessage在nvue頁(yè)面下接受參數(shù),message在vue頁(yè)面下接受參數(shù) 鏈接后拼接傳參,只在一開(kāi)始能傳 方法傳參 H5端,我這是用vue2寫(xiě)的 在index.html頁(yè)面加上這個(gè) 在首頁(yè)接受參數(shù) 往APP傳參 接受APP的方法傳參,變量跟data里面的變量綁定

    2024年02月15日
    瀏覽(16)
  • uniapp系列-超詳細(xì)教你在uni-app+vue3里通過(guò)web-view組件傳遞信息打開(kāi)H5頁(yè)面寫(xiě)入localstorage并解決兼容性

    uniapp系列-超詳細(xì)教你在uni-app+vue3里通過(guò)web-view組件傳遞信息打開(kāi)H5頁(yè)面寫(xiě)入localstorage并解決兼容性

    web-view 是一個(gè) web 瀏覽器組件,可以用來(lái)承載網(wǎng)頁(yè)的容器,會(huì)自動(dòng)鋪滿(mǎn)整個(gè)頁(yè)面(nvue 使用需要手動(dòng)指定寬高)。 點(diǎn)擊這里直達(dá)官網(wǎng)文檔 點(diǎn)擊這里下載我的代碼demo 本文最下面還有一些 常見(jiàn)或者奇怪問(wèn)題解決方案 哦~ 之前開(kāi)發(fā)好的H5頁(yè)面,不想重新開(kāi)發(fā),想要直接放進(jìn)項(xiàng)目用

    2024年02月09日
    瀏覽(28)
  • uniapp使用uni.createInnerAudioContext()實(shí)現(xiàn)在app 小程序 h5有聲書(shū)的播放

    實(shí)現(xiàn)效果展示功能帶你包括: 章節(jié),倒計(jì)時(shí),上一章,下一章,播放,暫停,倍速: uniapp官方uni.createInnerAudioContext()的文檔地址:官網(wǎng)文檔參考地址 首先分步驟介紹功能: 章節(jié)(這個(gè)調(diào)取接口遍歷數(shù)據(jù)就可以,彈出層的形式展示) 倒計(jì)時(shí) 上一章 下一章 播放 暫停 倍速 我這

    2024年02月11日
    瀏覽(95)
  • uni-app搭建h5項(xiàng)目

    uni-app搭建h5項(xiàng)目

    一、 打開(kāi)官方網(wǎng)站 https://uniapp.dcloud.net.cn/quickstart-cli.html 二、找到使用vue-cli命令行,按照文檔上的步驟進(jìn)行搭建 全局安裝 vue-cli 搭建項(xiàng)目 可以根據(jù)命令行搭建,搭建vue2.0對(duì)應(yīng)的是webpack, 也可以搭建vue3.0+vite,命令行下載不下來(lái),直接訪問(wèn)高亮起來(lái)的 gitee 然后下載模板即可

    2024年02月22日
    瀏覽(86)
  • uni-app打開(kāi)外部鏈接方式匯總(h5&app)

    問(wèn)題描述 在應(yīng)用中打開(kāi)一個(gè)外部的html頁(yè)面,即完整http鏈接的頁(yè)面。h5通過(guò)window.open或是內(nèi)嵌iframe基本都沒(méi)有問(wèn)題,本文主要針對(duì)app端的方法進(jìn)行匯總,不涉及到小程序端。 方案1 使用uni-app的擴(kuò)展組件 uni-link ,使用參考文檔uni-app官網(wǎng) 該組件的行為是在app內(nèi)打開(kāi)外部瀏覽器,

    2024年02月01日
    瀏覽(22)
  • uni-app滾動(dòng)分頁(yè) 兼容(App 小程序 H5)

    uni-app滾動(dòng)分頁(yè) 兼容(App 小程序 H5)

    因?yàn)槭謾C(jī)端本身屏幕空間不大 所以大家一般都會(huì)選擇用滾動(dòng)分頁(yè) 首先 我在根目錄下創(chuàng)建了一個(gè) api目錄 下面創(chuàng)建了一個(gè)bookApi.js 其中寫(xiě)了一個(gè)請(qǐng)求函數(shù) getBookList 根據(jù)當(dāng)前頁(yè) page 和 每頁(yè)展示多少條 pageSize 獲取數(shù)據(jù) 那么 我的組件代碼是這樣的 首先 我們肯定要引入bookApi.js中的

    2024年02月16日
    瀏覽(95)
  • H5向uni-app小程序傳遞參數(shù)

    1.script src=\\\"https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js\\\"/script 本地下載包引入也可以。 ?2.傳遞參數(shù)。 3.接收參數(shù)。 @message=\\\"handleMessage\\\" ??獲取當(dāng)前數(shù)據(jù)是一個(gè)數(shù)組,每次獲取讓數(shù)組長(zhǎng)度-1就是你需要的數(shù)據(jù)。

    2024年02月13日
    瀏覽(26)
  • uni-app實(shí)現(xiàn) app 小程序 手機(jī)端H5掃碼功能

    uni-app實(shí)現(xiàn) app 小程序 手機(jī)端H5掃碼功能

    首先 掃碼這個(gè)功能小程序和App都是有現(xiàn)成的方法 但是H5是不行的 我們可以看這樣一段代碼 這里 我們用了條件編譯 App和小程序中的代碼是 一樣的 他們都可以正常執(zhí)行scanCode進(jìn)行掃碼 至于H5手機(jī)端界面 我用web-view套了個(gè)百度的鏈接進(jìn)來(lái) 其實(shí) 大家可以參考我的文章 vue實(shí)現(xiàn)二維

    2024年02月11日
    瀏覽(109)
  • uni-app如何區(qū)分 app、h5、小程序代碼; uni-app如何判斷是android、ios、小程序

    uni-app如何區(qū)分 app、h5、小程序代碼; uni-app如何判斷是android、ios、小程序

    uniapp是DCloud公司于2012年開(kāi)始研發(fā)的能夠一次代碼開(kāi)發(fā),生成H5、小程序(微信、支付寶、百度、華為等)、APP等應(yīng)用的技術(shù)的統(tǒng)稱(chēng),開(kāi)發(fā)工具是HBuilderX,功能非常強(qiáng)大,由此引申出許多技術(shù)社區(qū)與生態(tài)環(huán)境。 使用HBuilderX開(kāi)發(fā)Uniapp程序的項(xiàng)目,用它生成多端應(yīng)用,由于兼容各種

    2024年02月11日
    瀏覽(93)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包