WebView使用简介
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; },