WebView公有属性、方法
/**
* 设置javascript接口前缀(用于JS交互作用)
* 例如设置为"js",那么页面在跳转"js://xxx"时,会走setOnJSCallback回调
*/
void setJavascriptInterfaceScheme(const std::string &scheme);
/**
* 设置主页内容、MIME类型、内容编码,基本URL
* @param data 主要的内容页面。
* @param MIMEType 描述消息内容类型的因特网标准
* @param encoding 编码数据
* @param baseURL 根链接
*/
void loadData(const cocos2d::Data &data, const std::string &MIMEType, const std::string &encoding, const std::string &baseURL);
/**
* 设置主页内容和基本URL
* @param string 主要的内容页面
* @param baseURL 基URL
*/
void loadHTMLString(const std::string &string, const std::string &baseURL = "");
/**
* 加载给定的URL
* @param url 要加载的URL
*/
void loadURL(const std::string &url);
/**
* 加载给定的本地文件
* @param fileName 要加载的文件路径
*/
void loadFile(const std::string &fileName);
/**
* 停止加载
*/
void stopLoading();
/**
* 重新加载
*/
void reload();
/**
* 判断是否能返回上一页(即回到上一个URL页面)
* @return 是否能返回
*/
bool canGoBack();
/**
* 判断是否能跳转下一页(即加载下一个URL界面)
* @return 是否能返回
*/
bool canGoForward();
/**
* 回到上一页
*/
void goBack();
/**
* 前往下一页
*/
void goForward();
/**
* 用于调用JavaScript中的函数(如,web:evaluateJS("alert("hello")"))
*/
void evaluateJS(const std::string &js);
/**
* 设置是否支持缩放,默认是false
*/
void setScalesPageToFit(const bool scalesPageToFit);
/**
* webView的回调函数
*/
typedef std::function<void(WebView *sender, const std::string &url)> ccWebViewCallback;
/**
* 设置即将开始加载时的回调
* @param callback 回调函数
* @return true,允许加载;false,不允许加载
*/
void setOnShouldStartLoading(const std::function<bool(WebView *sender, const std::string &url)>& callback);
/**
* 获取即将开始加载时的回调
*/
std::function<bool(WebView *sender, const std::string &url)> getOnShouldStartLoading()const;
/**
* 设置加载完成时的回调
* @param callback 回调函数
*/
void setOnDidFinishLoading(const ccWebViewCallback& callback);
/**
* 获取加载完成时的回调
*/
ccWebViewCallback getOnDidFinishLoading()const;
/**
* 设置加载失败时的回调
* @param callback 回调函数
*/
void setOnDidFailLoading(const ccWebViewCallback& callback);
/**
* 获取加载失败时的回调
*/
ccWebViewCallback getOnDidFailLoading()const;
/**
* 设置JS事件回调
*/
void setOnJSCallback(const ccWebViewCallback& callback);
/**
* 获取JS事件回调
*/
ccWebViewCallback getOnJSCallback()const;
WebView示例
ctor: function () {
// 初始化
var webView = new ccui.WebView();
// 坐标
webView.setPosition(640, 360);
// 控件大小
webView.setContentSize(1280, 720);
// 加载网络URL
webView.loadURL(http://www.baidu.com);
// 允许缩放
webView.setScalesPageToFit(true);
// 添加到视图上
this.addChild(webView);
// 设置加载流程回调
webView.setOnDidFinishLoading(this.OnDidFinishLoading.bind(this));
webView.setOnDidFailLoading(this.OnDidFailLoading.bind(this));
webView.setOnShouldStartLoading(this.OnShouldStartLoading.bind(this));
// 设置一个JS跳转的规则,cocosjs是前缀,即当跳转界面cocosjs://xxxx时,会进行回调,查看下面的OnJSCallback()函数
webView.setJavascriptInterfaceScheme("cocosjs");
// 设置JS回调
webView.setOnJSCallback(this.OnJSCallback.bind(this));
},
/**
* 加载完成后的回调
* @param sender WebView
* @param url 链接
*/
OnDidFinishLoading: function(sender, url) {
cc.log("webView OnDidFinishLoading");
},
/**
* 加载失败后的回调
* @param sender WebView
* @param url 链接
*/
OnDidFailLoading: function(sender, url) {
cc.log("webView OnDidFailLoading");
},
/**
* JS触发时的回调
* @param sender WebView
* @param url 链接
*/
OnJSCallback: function(sender, url) {
cc.log("JS回调 = " + url);
if (url == "cocosjs://closeKefuH5") {
game.UISystem.closeWindow(this);
}
},
/**
* 开始加载时的回调
* @param sender WebView
* @param url 链接
*/
OnShouldStartLoading: function(sender, url) {
cc.log("webView OnShouldStartLoading");
return true;
},