75 lines
3.0 KiB
JavaScript
75 lines
3.0 KiB
JavaScript
(function() {
|
|
if (window.wrClickHandler) {
|
|
window.removeEventListener('click', window.wrClickHandler, true);
|
|
}
|
|
window.wrClickHandler = function(e) {
|
|
console.log('Hook: Click event intercepted', {
|
|
target: e.target,
|
|
tagName: e.target.tagName,
|
|
id: e.target.id,
|
|
className: e.target.className
|
|
});
|
|
|
|
var eventInfo = null;
|
|
var currentElement = e.target;
|
|
while (currentElement && currentElement !== document) {
|
|
var tagName = currentElement.tagName || '';
|
|
var currentId = currentElement.id || '';
|
|
if (currentId === 'js_name') {
|
|
// 公众号顶部的作者
|
|
eventInfo = {
|
|
contentType: 'profile',
|
|
bizId: ''
|
|
};
|
|
console.log('Hook: MP author click intercepted');
|
|
break;
|
|
} else if (currentId === 'copyright_info') {
|
|
// 公众号顶部的文章来源
|
|
var bizId = typeof source_encode_biz !== 'undefined' ? source_encode_biz : '';
|
|
if (bizId) {
|
|
eventInfo = {
|
|
contentType: 'profile',
|
|
bizId: bizId
|
|
};
|
|
console.log('Hook: Copyright profile click intercepted, bizId:', bizId);
|
|
}
|
|
break;
|
|
} else if (tagName === 'MP-COMMON-PROFILE') {
|
|
// 公众号
|
|
var bizId = currentElement.dataset && currentElement.dataset['id'] ? currentElement.dataset['id'] : '';
|
|
if (bizId) {
|
|
eventInfo = {
|
|
contentType: 'profile',
|
|
bizId: bizId
|
|
};
|
|
console.log('Hook: Profile click intercepted, bizId:', bizId);
|
|
}
|
|
break;
|
|
} else if (currentElement.href && currentElement.href.indexOf('mp.weixin.qq.com') !== -1) {
|
|
// 公众号文章链接
|
|
eventInfo = {
|
|
contentType: 'link',
|
|
url: currentElement.href
|
|
};
|
|
console.log('Hook: Link click intercepted, URL:', currentElement.href);
|
|
break;
|
|
}
|
|
currentElement = currentElement.parentElement;
|
|
}
|
|
// 如果有 eventInfo,则阻断事件冒泡,拦截公众号原始的跳转弹窗
|
|
if (eventInfo) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
}
|
|
if (eventInfo && wereadBridge) {
|
|
wereadBridge.execMPReaderMethod('MPReader', {
|
|
cmd: 'clickMpInterceptor',
|
|
data: eventInfo
|
|
});
|
|
|
|
}
|
|
};
|
|
window.addEventListener('click', window.wrClickHandler, true);
|
|
console.log('Hook: Click interceptor setup completed');
|
|
})();
|