您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
贴吧可移动悬浮窗
当前为
- // ==UserScript==
- // @name Tieba Float Movable
- // @namespace http://gera2ld.blog.163.com/
- // @author Gerald <gera2ld@163.com>
- // @icon http://s.gravatar.com/avatar/a0ad718d86d21262ccd6ff271ece08a3?s=80
- // @version 1.2.9.1
- // @description 贴吧可移动悬浮窗
- // @homepageURL http://geraldl.ml/userjs/TiebaFloatMovable
- // @include http://tieba.baidu.com/*
- // @exclude http://tieba.baidu.com/tb/*
- // @require https://greasyfork.org/scripts/144/code.user.js
- // @grant none
- // ==/UserScript==
- function locate(m,css) {
- var c={};
- args.forEach(function(i){c[i]=/^-?\d+px/.test(css[i])?css[i]:'20px';});
- m.css(c);
- }
- function movable(o,name) {
- var m=$(o);
- if(!m.mousedown) return;
- o.moving=false;args=['right','bottom'];
- m.mousedown(function(e) {
- if(['DIV','TD'].indexOf(e.target.tagName)<0||e.target.contentEditable=='true') return;
- e.preventDefault();e.stopPropagation();
- o.x=e.pageX;
- if(args.indexOf('left')>=0) o.x-=parseInt(m.css('left'));
- else o.x+=parseInt(m.css('right'));
- o.y=e.pageY;
- if(args.indexOf('top')>=0) o.y-=parseInt(m.css('top'));
- else o.y+=parseInt(m.css('bottom'));
- if(!o.moving) $(document).mousemove(function(e) {
- if(o.moving) {
- var css={};
- for(var i in args) {
- var arg=args[i];
- if(arg=='left') css[arg]=e.pageX-o.x;
- else if(arg=='right') css[arg]=o.x-e.pageX;
- else if(arg=='top') css[arg]=e.pageY-o.y;
- else if(arg=='bottom') css[arg]=o.y-e.pageY;
- else continue;
- css[arg]+='px';
- }
- locate(m,css);
- }
- e.preventDefault();
- }).mouseup(function(e) {
- if(o.moving) {
- o.moving=false;
- var css={};
- for(var i in args) {
- var arg=args[i];
- css[arg]=m.css(arg);
- }
- utils.setObj('mcss_'+name,css);
- $(document).unbind('mousemove').unbind('mouseup');
- }
- });
- o.moving=true;
- });
- locate(m,utils.getObj('mcss_'+name,{}));
- }
- function unmovable(o) {$(o).unbind('mousedown').css({left:'',right:'',top:'',bottom:''});}
- if(unsafeWindow.PosterContext&&unsafeWindow.PosterContext.isPostAllowed()) utils.wait(unsafeWindow,'test_editor',function(editor){
- function unminify(){
- if(utils.unminify) {
- mn.hide();ep.show();editor.focus();delete utils.unminify;
- }
- }
- function minify(){
- ep.hide();mn.show();utils.unminify=unminify;
- unsafeWindow.unminifyShare=unminify; // 献给大花猫
- }
- function floatUp(){
- if(sta=='normal'||!allowUp) styleUp.html('');
- else styleUp.html('\
- .edui-popup{bottom:44px;top:auto !important;}\
- .edui-popup-caret{bottom:-8px;top:auto !important;transform:scale(1,-1);-webkit-transform:scale(1,-1);}\
- ');
- }
- function switchFloat(e) {
- if(e) {
- sta=sta=='open'?'close':'open';
- utils.setObj('float',sta);
- } else {
- ep.unbind('dblclick');if(allowSimple) ep.dblclick(switchFloat);
- if(allowMinify) {minify();mx.show();} else {unminify();mx.hide();}
- }
- if(!allowSimple||sta=='open') {
- styleFloat.html('\
- #tb_rich_poster{width:635px;}\
- #tb_rich_poster *{max-width:635px;}\
- #ueditor_replace{min-height:50px !important;}\
- .poster_success{top:50px !important}\
- ');
- if(allowSimple) ep.attr('title','双击精简');
- } else {
- styleFloat.html('\
- #tb_rich_poster{width:360px;}\
- #tb_rich_poster *{max-width:360px;}\
- #ueditor_replace{min-height:24px !important;width:310px !important;}\
- .poster_success{top:0 !important;left:40px !important;}\
- .editor_bottom_panel,.edui-toolbar{display:none;}\
- .editor_textfield{padding:0 !important;}\
- .old_style_wrapper{width:330px !important;}\
- ');
- ep.attr('title','双击展开');
- }
- }
- function bindShortcut(){if(shortcut) utils.shortcut(shortcut,unminify);}
- var styleEditor=utils.addStyle('\
- #tb_rich_poster{border:3px double grey;position:fixed !important;z-index:10001;background-color:#E7EAEB;}\
- #tb_rich_poster .editor_wrapper{margin-left:2px;}\
- .poster_head,#bdInputObjWrapper,.tb_poster_placeholder,.poster_signature,.poster_draft_status,.poster_reply{display:none !important;}\
- #tb_rich_poster,.editor_bottom_panel{margin-bottom:0 !important;}\
- #tb_rich_poster,.poster_body,.poster_component{padding:0 !important;}\
- '),styleFloat=utils.addStyle(),styleUp=utils.addStyle(),args,
- ep=$('#tb_rich_poster'),buttonFloat=utils.addSButton('悬 浮'),
- panelFloat=utils.addRPopup(buttonFloat,null,function(){switchFloat();}).panel,
- shortcut=utils.getObj('hk-float',''),sta=utils.getObj('float','open'),
- allowUp=utils.getObj('allowUp',true),allowMinify=utils.getObj('allowMinify',true),
- allowSimple=utils.getObj('allowSimple',true),
- mn=$('<div id=btUnminify style="position:fixed;bottom:0;right:0;background:white;padding-top:40px;z-index:10;">◀</div>').appendTo(document.body).hide().mouseover(unminify),
- mx=$('<div style="position:absolute;border:1px solid gray;background:inherit;height:100%;cursor:pointer;right:0;" title="最小化">▶</div>').appendTo($('<div style="position:relative;background:inherit;height:100%;">').appendTo($('<div style="position:absolute;top:0;background:inherit;height:100%;">').appendTo(ep))).hide().click(minify);
- movable(ep[0],'float');editor.$container.attr('style','');
- switchFloat();floatUp();bindShortcut();
- $('.j_quick_reply').click(unminify);
- panelFloat.html('<div class="ge_sbtn" style="cursor:default">悬浮设置</div><label><input type=checkbox id=allowUp>向上弹出窗口</label><br><label><input type=checkbox id=allowMinify>自动隐藏到右下角</label><br><label style="margin-left:20px;">呼出的快捷键:'+utils.getLink('hotkey',{title:'帮助',html:'(?)'})+'<input id=shortcut style="width:60px"></label><br><label><input type=checkbox id=allowSimple>双击精简或展开</label><br><button id=btReset>重置悬浮窗位置</button>');
- $('#btReset',panelFloat).click(function(){locate(ep,{});});
- utils.bindProp($('#allowUp',panelFloat),'checked','allowUp',0,function(e){allowUp=this.checked;floatUp();});
- utils.bindProp($('#allowMinify',panelFloat),'checked','allowMinify',0,function(e){allowMinify=this.checked;});
- utils.bindProp($('#shortcut',panelFloat),'value','hk-float',0,function(e){if(shortcut) utils.shortcut(shortcut);shortcut=this.value;bindShortcut();});
- utils.bindProp($('#allowSimple',panelFloat),'checked','allowSimple',0,function(e){allowSimple=this.checked;});
- });