webview页面和壳通信的库(精简版)
// PG精简版
(function() {
var PG = {
iosBridge: null,
callbackId: 0,
callbacks: [],
commandQueue: [],
commandQueueFlushing: false
},
ua = navigator.userAgent,
isIOS = (ua.indexOf("iPhone") > -1 || ua.indexOf("iPad") > -1 || ua.indexOf("iPod") > -1) ? true : false;
PG.getAndClearQueuedCommands = function () {
var commandQueue_json = JSON.stringify(PG.commandQueue);
PG.commandQueue = [];
return commandQueue_json;
}; PG.exec = function(method, callback, args) {
var callbackId = '';
if (typeof(callback) == "undefined") {
callback = null;
}
if (typeof(args) == "undefined") {
args = {};
} if (callback && typeof(callback) == 'function') {
callbackId = method + PG.callbackId++;
PG.callbacks[callbackId] = callback;
} var obj = {
Method: method,
CallbackId: callbackId,
Args: args
}; if (isIOS) {
if (PG.iosBridge == null) {
PG.iosBridge = document.createElement("iframe");
PG.iosBridge.setAttribute("style", "display:none;");
PG.iosBridge.setAttribute("height", "0px");
PG.iosBridge.setAttribute("width", "0px");
PG.iosBridge.setAttribute("frameborder", "0");
document.documentElement.appendChild(PG.iosBridge);
} PG.commandQueue.push(JSON.stringify(obj));
if (!PG.commandQueueFlushing) {
PG.iosBridge.src = 'pg://ready';
} } else if (window.comjs) {
// android
window.comjs.notify('pg://' + encodeURIComponent(JSON.stringify(obj)));
} else {
console.log("非ios或android平台,不合适吧");
} }; PG.callback = function(callbackId, args) {
if (PG.callbacks[callbackId]) {
try {
var temp = decodeURIComponent(args),
obj = JSON.parse(temp); PG.callbacks[callbackId](obj); } catch (e) {
console.log("Error in success callback: " + callbackId + " = " + e);
} delete PG.callbacks[callbackId]; }
}; if (typeof(window) === "object" && typeof(window.document) === "object") {
window.PG = PG;
} })();
webview页面和壳通信的库(精简版)的更多相关文章
- webview页面间的通信问题
前提 记一次多页面开发. 开发需求时会对页面刷新(reload),返回到上一页(用户返回 / history.go()) 页面间的通信 sessionStorage保存本次会话的信息,同步到新页面或上 ...
- ip 淘宝ip库 精简版
<?php header('Content-type: text/html; charset=utf-8'); //根据ip获取城市.网络运营商等信息 function findCityByIp ...
- Android WebView页面加载优化
目前webapp越来越多,体验也越来越好,为了能够更好的使用WebView展示出流畅的的页面,可以从以下几点做优化: WebView缓存 资源文件本地存储 减少耗时操作 客户端UI优化 可能有人会说了 ...
- webview页面缩放 & 自适应
0.webview页面自适应: // 1.LayoutAlgorithm.NARROW_COLUMNS : 适应内容大小// 2.LayoutAlgorithm.SINGLE_COLUMN:适应屏幕, ...
- iOS开发Safari调试WebView页面
App混合开发现已是常态,不过作为app端开发人员,对H5页面的使用,可不能简单的局限于使用,一些简单的调试方法还是有必要了解的. 关于如何在使用webview过程中,如何对web内对内容进行调试,这 ...
- Chrome Inspect不显示Webview页面的问题总结
首先,确保手机打开了USB调试.如果还是检测不到WebView页面,主要有以下几种情况. 1.反应慢,稍等一会 2.关闭然后重新打开USB调试开关,刺激一下chrome,我的魅族手机有时需要这样操作一 ...
- 微信小程序web-view页面安卓下显示空白的解决办法!!!
web-view页面在你向地址拼接参数展示页面时,在安卓上有时会显示空白 解决方案: A: 普通不需要参数的话可以直接把地址写在src里,不要去在onLoad里获取你的全局变量后再赋值. B: 如果需 ...
- js 页面间的通信
看了一下公司原来的代码,原页面ajax post返回一个页面完整的HTML,然后再打开一个新页面并输出ajax返回的所有代码到新页面上,在新页面上以表单提交的形式实现重定向. 任凭我想了半天也没想出来 ...
- SSE两个页面的相互通信
两个页面之间互相通信 首先搭建express框架,然后通过two页面发送数据给服务器,服务器把数据传送给one页面 在two 中发送数据,在one中显示 router/index.js var axi ...
随机推荐
- 161121、hibernate导致数据出错的两个地方
一.在查询出来的对象上直接设置属性(该属性配置了可以持久化,如果不是可持久化的就没有关系). 出错的代码:(查询用的不好也会导致数据更新哦) Pagination pagination = group ...
- org.hibernate.MappingException: Unknown entity常见问题。回顾笔记,以前没记,现在补上,xiaochao写的蛮好的直接给转载了。
转自http://www.blogjava.net/xiaochao/articles/hibernatetopic.html. 官方说明如下: Hibernate遵循EJB3.0实体bean的注解规 ...
- Linux CentOS 6.5 yum安装MongoDB的操作
安装MongoDB的方法有很多种,可以源代码安装,在CentOS也可以用yum源安装的方法.由于MongoDB更新得比较快,我比较喜欢用yum源安装的方法.64位CentOS下的安装步骤如下: 1.准 ...
- 新增PHP经典笔记
[设置编码] header("Content-type: text/html; charset=utf-8"); 1. parse_url - 解析 URL,返回其组成部分 $ua ...
- PostgreSQL的 Slony-I 数据同步
原文--http://www.tuicool.com/articles/mMvARf 先谈谈slony的局限性: 1. DDL动作是不会被复制到: 2. 如果想使用slony来同步数据,表必须是带有主 ...
- 网络统计学与web前端开发基础技术
网络统计学与web前端开发基础技术 学习web前端开发基础技术(网页设计)需要了解:HTML.CSS.JavaScript三种语言.下面我们就来了解一下这三门技术在网页设计中的用途: HTML是网页内 ...
- Finding Nemo 分类: POJ 2015-07-11 10:11 10人阅读 评论(0) 收藏
Finding Nemo Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 8117 Accepted: 1883 Desc ...
- Linux多线程同步机制
http://blog.163.com/he_junwei/blog/static/19793764620141711130253/ http://blog.csdn.net/h_armony/art ...
- boost库学习之开篇
本系列文章使用boost_1.58.0版本. 一.欢迎使用boost C++库 boost致力于提供一个免费的.便携的源代码级的库. 我们重视那些与C++标准一起工作良好的库.boost库将要成为一个 ...
- 关于Filter的配置
配置代码: <filter> <display-name>OneFilter</display-name> <filter-name>OneFilte ...