# 初始化与使用
如果您通过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;