cocosjs WebView公有屬性、方法及與js的交互

複製代碼

/**
 * 設置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;
},
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章