Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 67 additions & 44 deletions src/mip-custom/mip-custom.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,22 +65,34 @@ define(function () {
dom.addPlaceholder.apply(this);
// 判断是否是MIP2的环境,配合小说shell,由小说shell去控制custom的请求是否发送
if (window.MIP.version && +window.MIP.version === 2) {
// 监听小说shell播放的广告请求的事件
window.addEventListener('showAdvertising', handler);
// 当小说shell优先加载时——向小说shell发送custom已经ready的状态以方便后续事件的执行
var shellWindow = window.MIP.viewer.page.isRootPage ? window : window.parent;
window.MIP.viewer.page.emitCustomEvent(shellWindow, false, {
name: 'customReady',
data: {
customPageId: window.MIP.viewer.page.currentPageId
var currentWindow = getCurrentWindow();
var isRootPage = currentWindow.MIP.viewer.page.isRootPage;
var rootWindow = isRootPage ? window : window.parent;
window.addEventListener('mipShellReady', function () {
if (window.MIP.mipshellXiaoshuo != null) {
// 监听小说shell播放的广告请求的事件
window.addEventListener('showAdvertising', handler);
}
})
else {
this.initElement(dom)
}
});
}
else {
this.initElement(dom)
}
};

/**
* 在MIP2的小说中会涉及不到不同的window,需要获取当前页的window
*
*/
function getCurrentWindow () {
var pageId = window.MIP.viewer.page.currentPageId;
var pageInfo = window.MIP.viewer.page.getPageById(pageId);
return pageInfo.targetWindow
}

/**
* 发出请求+渲染页面
*
Expand Down Expand Up @@ -212,6 +224,15 @@ define(function () {
// dom 渲染
dom.render(element, tplData, container);
}

// 广告插入页面时,增加渐显效果
var mipCustomContainers = document.querySelectorAll('[mip-custom-container]');
for (var i = mipCustomContainers.length - 1; i >= 0; i--) {
var mipCustomContainer = mipCustomContainers[i];
mipCustomContainer.classList.add('fadein');
}
// 移除广告占位符号
dom.removePlaceholder.apply(this);
};

/**
Expand Down Expand Up @@ -277,6 +298,8 @@ define(function () {
var performance = {};
performance.fetchStart = new Date() - 0;
var paramUrl = url

// 小说的特殊参数——novelData和fromSearch
if (me.novelData) {
var novelData = encodeURIComponent(JSON.stringify(me.novelData))
paramUrl = paramUrl + '&novelData=' + novelData
Expand Down Expand Up @@ -314,43 +337,10 @@ define(function () {
me.element.remove();
return;
}

// 模板的前端渲染
callback && callback(data.data, element);
// 广告插入页面时,增加渐显效果
var mipCustomContainers = document.querySelectorAll('[mip-custom-container]');
for (var i = mipCustomContainers.length - 1; i >= 0; i--) {
var mipCustomContainer = mipCustomContainers[i];
mipCustomContainer.classList.add('fadein');
}

// 性能日志:按照流量 1/500 发送日志
var random500 = Math.random() * 500;
if (random500 < 1) {
// 性能日志:emptyTime-广告未显示时间
performance.renderEnd = new Date() - 0; // 渲染结束时间戳
performance.emptyTime = performance.renderEnd - performance.fetchStart; // 页面空白毫秒数
performance.frontendRender = performance.renderEnd - performance.responseEnd;

// 前端打点时间
var frontendData = {
duration: performance.duration,
emptyTime: performance.emptyTime,
frontendRender: performance.frontendRender
};
// 加入后端打点时间
var frontAndServerData;
if (data.data.responseTime) {
frontAndServerData = util.fn.extend(frontendData, data.data.responseTime);
}
else {
frontAndServerData = frontendData;
}
// 加入默认统计参数
performanceData.params.info = JSON.stringify(util.fn.extend(performanceData.params.info, frontAndServerData, 1));
log.sendLog(performanceData.host, performanceData.params);
}

dom.removePlaceholder.apply(me);
me.setPerformanceLogs(performance);
}, function (error) {
log.sendLog(logData.host, util.fn.extend(logData.error, logData.params, errorData));
me.element.remove();
Expand All @@ -361,6 +351,39 @@ define(function () {
});
};

/**
* 性能日志:按照流量 1/500 发送日志
*
* @param {Object} performance 性能参数
*/
customElement.prototype.setPerformanceLogs = function (performance) {
var random500 = Math.random() * 500;
if (random500 < 1) {
// 性能日志:emptyTime-广告未显示时间
performance.renderEnd = new Date() - 0; // 渲染结束时间戳
performance.emptyTime = performance.renderEnd - performance.fetchStart; // 页面空白毫秒数
performance.frontendRender = performance.renderEnd - performance.responseEnd;

// 前端打点时间
var frontendData = {
duration: performance.duration,
emptyTime: performance.emptyTime,
frontendRender: performance.frontendRender
};
// 加入后端打点时间
var frontAndServerData;
if (data.data.responseTime) {
frontAndServerData = util.fn.extend(frontendData, data.data.responseTime);
}
else {
frontAndServerData = frontendData;
}
// 加入默认统计参数
performanceData.params.info = JSON.stringify(util.fn.extend(performanceData.params.info, frontAndServerData, 1));
log.sendLog(performanceData.host, performanceData.params);
}
};

/**
* 缓存异步数据
*
Expand Down