# 初始化与使用

如果您通过CDN的方式引用,我们强烈建议在head标签中引用kreator的sdk文件。这是因为在微信与支付宝环境中,kreator将自动帮您引用jweixin.js与web-view.min.js(即微信与支付宝的jssdk),我们希望这类环境差异引用的操作不应该大量的出现在业务html文件中。

但不幸的是,微信js-sdk如果在document进入render之后才引用,那么有极大概率会出现初始化失败的情况(即不能获取到window.wx对象——真是一个失败透顶的处理)。经过我们的大量实验,jweixin.js在head内引用才能够保证初始化会100%成功。故而kreator的依赖引用逻辑也需要保证在document初始化完成之前执行完毕。

因此,请保证kreator在head标签内引用:

PS:之所以需要判断环境,是因为fast-static.dmallcdn的cdn加速域名在Android端会有和iOS不同的表现,可能会由于您的代理工具导致http环境无法请求https环境的资源。

<!doctype html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="description" content="多点,多点新鲜,Dmall,多点商城,多点新鲜,生活,服务,生鲜,配送">
    <meta name="keywords" content="多点,多点新鲜,O2O,Dmall,多点商城,多点新鲜,生活,服务,生鲜,配送">
    <meta name="viewport"
        content="width=device-width, initial-scale=1.0, user-scalable=no,minimum-scale=1.0, maximum-scale=1.0,viewport-fit=cover">
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <meta name="format-detection" content="telephone=no" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title></title>

    <meta name="format-detection" content="telephone=no" />

    <script>
        function getEvt() {
            var href = window.location.href,
                result;
            if (href.indexOf("//test") > 0 && href.indexOf("/test./") === -1) {
                result = "//test";
            } else if (href.indexOf("//dev") > 0 && href.indexOf("//dev.") === -1) {
                result = "//dev";
            } else {
                result = "//";
            }

            return result;
        }
        document.write("<script src='" + getEvt() + "fast-static.dmallcdn.com/kayak-project/kreator/dist/kreator.js'><\/script>");
    </script>
</head>
<body>
....
</body>

也由于这方面的原因,如果您通过npm安装kreator,那么我们建议您在html中自行处理微信与支付宝sdk的引用。

// 目前已无需实例化,自动挂载至window对象上
window.kreator.getEnv()

// 或者在Vue项目中:

Vue.prototype.kreator = kreator;