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');
|
||
})();
|