SOURCE

console 命令行工具 X clear

                    
>
console
(function(Hybrid) {
  // 实现一个hybrid demo
  // 最后发送出去的参数格式 hybrid://example?params=params&callback=callback
  // 合成url
  function getUrl(options) {
    var url = 'hybrid://' + options.name;
    var flag = '?';
    var paras = options.paras;

    if (paras && typeof paras == 'object') {
      url += flag + 'paras=' + JSON.stringify(paras);
      flag = '&';
    }

    if (options.callback) {
      url += flag + options.callback;
      flag = '&';
    }

    return url;
  }

  // 发送参数
  function sendUrl(options) {
    var url = getUrl(options);
    var iframe = document.createElement('iframe');

    iframe.src = url;
    iframe.style.display = 'none';

    document.body.appendChild(iframe);

    setTimeout(function() {
      iframe.remove();
      iframe = null;
    },
    1000);
  }

  // 发送hybrid
  function requestHybrid(options) {
    if (!options.name) {
      throw new Error('请传入名字');
    }

    if (options.callback) {

      var t = options.callback(),
      uuid = generateUUID();

      options.callback = uuid;

      Hybrid[uuid] = t;
    }

    sendUrl(options);
  }

  requestHybrid({
    name: 'example',
    paras: {
      name: 'Saber'
    },
    callback: function() {
      console.log('callback');
    }
  });

  function generateUUID() {
    var d = new Date().getTime();
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
      var r = (d + Math.random() * 16) % 16 | 0;
      d = Math.floor(d / 16);
      return (c == 'x' ? r: (r & 0x3 | 0x8)).toString(16);
    });
    return uuid;
  };
} (window.Hybrid = {}));
<!DOCTYPE html>
<html lang="en">
  
  <head>
    <meta charset="UTF-8" />
    <title>
      Document
    </title>
  </head>
  
  <body>
  </body>

</html>