/**
* 設置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;
},