饭否上转发消息时避免at到自己
// ==UserScript==
// @name Fanfou Forward Without Mentioning Myself
// @version 1.0.5
// @author HackMyBrain
// @description 饭否上转发消息时避免at到自己
// @include http://fanfou.com/*
// @namespace https://greasyfork.org/users/2844
// ==/UserScript==
(function (){
var mylink = document.querySelector('#navigation ul > li:nth-of-type(2) > a'); //获取"我的空间"元素,用于后续判断消息中的超链接
try{
var fw_textarea = document.getElementById('PopupForm').getElementsByTagName('textarea')[0];
} catch(err) {
return;
}
var fwReplacer = function (e){
if ( e.target.tagName.toLowerCase() === 'a' && e.target.className === 'repost' ){
var text = e.target.getAttribute('text');
var fw_nickname = text.match(/@\S+/)[0]; // 获取被直接转发的饭er的昵称
var content = e.target.parentElement.parentElement.getElementsByClassName('content')[0];
var context_text = ' ';
var content_child;
for(var i = 0; i < content.childNodes.length; i++){
content_child = content.childNodes[i];
if ( content_child.nodeType === 3 || content_child.tagName.toLowerCase() === 'strong' || content_child.className === 'former' || content_child.className === 'nickquery' || ( !!content_child.href && content_child.href.indexOf('http://fanfou.com/q/') === 0 ) ) {
if ( content_child.className === 'former' && content_child.href === mylink.href ) { // 消息中at到自己的部分
context_text += content_child.textContent + '\n';
} else { // 普通文本、at不到的人、at得到的别人
context_text += content_child.textContent;
}
} else if ( content_child.getAttribute('rel') === 'nofollow' ){ // 消息中夹带的超链接
context_text += content_child.getAttribute('title');
}
}
// context_text = context_text.replace(/^\x20{2}/, '\x20'); // 带有图片的消息, content_child 中的 text 节点开头有多余的空格(饭否本身的问题), 应去掉
setTimeout(function(){
if ( e.target.parentElement.querySelectorAll(".delete, a[href*='/photo.del/'][class='post_act']").length != 0 ) {
//通过检测是否有删除按钮, 判断所直接转发的是否自己的消息. a[href*='/photo.del/'][class='post_act'] 是自己相册页面的删除按钮
fw_textarea.value = ('转' + fw_nickname + '\n' + context_text).replace(/\n\x20/g,'\n');
} else {
fw_textarea.value = ('转' + fw_nickname + context_text).replace(/\n\x20/g,'\n');
}
},30);
setTimeout(function(){fw_textarea.setSelectionRange(0,0)}, 60); // 光标定位到消息框开头
}
}
document.addEventListener('click', fwReplacer, false);
})();