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; },