给一叶提个意见

论坛日常站务以及建议或咨询
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai

给一叶提个意见

#1

帖子 greco » 2009-03-13 13:48

论坛有个引用回复按钮,每次按都要跳转到发表回复页面,很麻烦。

可不可以直接用JS把内容放到下面的快速回复里面呢?

像这样:

代码: 全选

var refClicked = function(refButton) {
    var floor = refButton.parentNode.parentNode.parentNode.parentNode;//TBODY
    var refMember = floor.rows[0].cells[0].childNodes[3].childNodes[1].childNodes[0].innerHTML;
    var refText = floor.rows[1].cells[1].childNodes[1].childNodes[1].rows[0].cells[0].childNodes[1].textContent;
    
    var txtMessage = document.getElementsByName('message')[0];
    txtMessage.value = '[quote="' + refMember +'"]' + refText + '[/quote]';
}
然后把页面中的那个链接做如下更改
<textarea id="message" name="message" rows="15" cols="76" tabindex="3" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onkeydown="ctrlenter(event);" style="width: 98%;"></textarea>

<a onclick="refClicked(this);" href="#message"><img src="viewtopic.php_files/icon_post_quote.gif" alt="引用回复" title="引用回复"></a>

这样就不用跳转,直接可以引用回复了

还可以节约链接及数据查询开销 :em11
上次由 greco 在 2009-03-14 9:06,总共编辑 1 次。
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai

Re: 给一叶提个意见

#2

帖子 greco » 2009-03-13 13:49

这段Javascript在firefox下测试过了,没问题,其他浏览器没测试过
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
联系:

Re: 给一叶提个意见

#3

帖子 lerosua » 2009-03-13 13:55

不懂js,方便楼主回复吗?防止楼主的回复变发帖? :em06
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai

Re: 给一叶提个意见

#4

帖子 greco » 2009-03-13 14:11

lerosua 写了:不懂js,方便楼主回复吗?防止楼主的回复变发帖? :em06
减少论坛的开销,因为还是有很多人用引用回复这个功能的

现在的引用回复会重新向server发起request

server那边还要查数据库,还要处理这个request的开销

改掉的话,就不会有这些开销了

还方便大家用,多好 :em11
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
头像
hcym
帖子: 15634
注册时间: 2007-05-06 2:46

Re: 给一叶提个意见

#5

帖子 hcym » 2009-03-13 14:11

绕地球一圈多

我就是用手势左右一划啦,自动划啦进回复框

动作:GestureLeft,GestureRight

代码: 全选

Go to Page,"javascript:(function(){var s=window.getSelection().toString();s=s;var fs=document.getElementsByTagName('form');var f;var tArea=0;for(var i=fs.length-1;i>=0;i--){f=fs[i];for(var j=0;j<f.elements.length;j++){var el=f.elements[j];if(el.name){if(el.tagName == 'TEXTAREA'){tArea=1;break;}}}if(tArea){break;}}if(el&&el.tagName=='TEXTAREA'){el.value+=s+'\r\n';el.select();el.focus();var r=document.selection.createRange();r.collapse(false);r.select();}})()"

:em01
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: 给一叶提个意见

#6

帖子 adagio » 2009-03-13 14:16

方便灌水! :em11
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai

Re: 给一叶提个意见

#7

帖子 greco » 2009-03-13 14:21

hcym 写了:绕地球一圈多

我就是用手势左右一划啦,自动划啦进回复框

动作:GestureLeft,GestureRight

代码: 全选

Go to Page,"javascript:(function(){var s=window.getSelection().toString();s=s;var fs=document.getElementsByTagName('form');var f;var tArea=0;for(var i=fs.length-1;i>=0;i--){f=fs[i];for(var j=0;j<f.elements.length;j++){var el=f.elements[j];if(el.name){if(el.tagName == 'TEXTAREA'){tArea=1;break;}}}if(tArea){break;}}if(el&&el.tagName=='TEXTAREA'){el.value+=s+'\r\n';el.select();el.focus();var r=document.selection.createRange();r.collapse(false);r.select();}})()"

:em01

额~这个有啥用,这个只是把圈起来的放到textarea吧

还有 window 的 getSelection 方法是标准的方法吗?貌似只有在 firefox 里面有啊

人家用其他浏览器的怎么办?
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai

Re: 给一叶提个意见

#8

帖子 greco » 2009-03-13 14:23

adagio 写了:方便灌水! :em11
被大三A发现了 :em06
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
联系:

Re: 给一叶提个意见

#9

帖子 lerosua » 2009-03-13 14:26

greco 写了:
lerosua 写了:不懂js,方便楼主回复吗?防止楼主的回复变发帖? :em06
减少论坛的开销,因为还是有很多人用引用回复这个功能的

现在的引用回复会重新向server发起request

server那边还要查数据库,还要处理这个request的开销

改掉的话,就不会有这些开销了

还方便大家用,多好 :em11
错怪你了,是好同志来的。 :em06
头像
hcym
帖子: 15634
注册时间: 2007-05-06 2:46

Re: 给一叶提个意见

#10

帖子 hcym » 2009-03-13 14:34

greco 写了:
hcym 写了:绕地球一圈多

我就是用手势左右一划啦,自动划啦进回复框

动作:GestureLeft,GestureRight

代码: 全选

Go to Page,"javascript:(function(){var s=window.getSelection().toString();s=s;var fs=document.getElementsByTagName('form');var f;var tArea=0;for(var i=fs.length-1;i>=0;i--){f=fs[i];for(var j=0;j<f.elements.length;j++){var el=f.elements[j];if(el.name){if(el.tagName == 'TEXTAREA'){tArea=1;break;}}}if(tArea){break;}}if(el&&el.tagName=='TEXTAREA'){el.value+=s+'\r\n';el.select();el.focus();var r=document.selection.createRange();r.collapse(false);r.select();}})()"

:em01

额~这个有啥用,这个只是把圈起来的放到textarea吧

还有 window 的 getSelection 方法是标准的方法吗?貌似只有在 firefox 里面有啊

人家用其他浏览器的怎么办?
引用号,颜色码都可以自己加啊,原来写这神码的是有加引用码,我给去了,灌水不留痕

另外加在右键菜单上BBCode,这就是OPERA的方便神奇之处,说了你也不懂,得ee以上级别才行

:em04
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai

Re: 给一叶提个意见

#11

帖子 greco » 2009-03-13 14:40

hcym 写了:
greco 写了:
hcym 写了:绕地球一圈多

我就是用手势左右一划啦,自动划啦进回复框

动作:GestureLeft,GestureRight

代码: 全选

Go to Page,"javascript:(function(){var s=window.getSelection().toString();s=s;var fs=document.getElementsByTagName('form');var f;var tArea=0;for(var i=fs.length-1;i>=0;i--){f=fs[i];for(var j=0;j<f.elements.length;j++){var el=f.elements[j];if(el.name){if(el.tagName == 'TEXTAREA'){tArea=1;break;}}}if(tArea){break;}}if(el&&el.tagName=='TEXTAREA'){el.value+=s+'\r\n';el.select();el.focus();var r=document.selection.createRange();r.collapse(false);r.select();}})()"

:em01

额~这个有啥用,这个只是把圈起来的放到textarea吧

还有 window 的 getSelection 方法是标准的方法吗?貌似只有在 firefox 里面有啊

人家用其他浏览器的怎么办?
引用号,颜色码都可以自己加啊,原来写这神码的是有加引用码,我给去了,灌水不留痕

另外加在右键菜单上BBCode,这就是OPERA的方便神奇之处,说了你也不懂,得ee以上级别才行

:em04
别拿我跟 ee 比 :em24
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
头像
hcym
帖子: 15634
注册时间: 2007-05-06 2:46

Re: 给一叶提个意见

#12

帖子 hcym » 2009-03-13 14:51

别拿我跟 ee 比
嗯,这样比是丢人,尽管俺也不会神码

不过你说的这些JS,我都是本地鼠标手势搞定,和局端无关

上下翻飞,相当方便

:em01
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai

Re: 给一叶提个意见

#13

帖子 greco » 2009-03-13 17:11

hcym 写了:引用: 别拿我跟 ee 比
嗯,这样比是丢人,尽管俺也不会神码
不过你说的这些JS,我都是本地鼠标手势搞定,和局端无关
上下翻飞,相当方便
什么叫这样比是丢人,什么跟什么嘛 :em20

要client端也可以啊,firefox 装个GreaseMonkey插件再放上这段代码就好了.

代码: 全选

// ==UserScript==
// @name           UbuntuRef
// @namespace      UbuntuCN
// @include        http://forum.ubuntu.org.cn/viewtopic.php*
// ==/UserScript==

var txtMessage = document.getElementsByName('message')[0];
txtMessage.setAttribute('id', 'message');
delete txtMessage;
var gensmall = document.getElementsByClassName('gensmall');

var tmp;
for(var i=0; i<gensmall.length; i++) {
  tmp = gensmall[i];
  if (tmp.tagName != 'DIV') continue;
  if (tmp.childNodes.length != 2) continue;
  tmp = tmp.childNodes[0];
  tmp.href = '#message';
  
  tmp.addEventListener('click', function() {
    var floor = this.parentNode.parentNode.parentNode.parentNode;
    var refMember = floor.rows[0].cells[0].childNodes[3].childNodes[1].childNodes[0].innerHTML;
    var refText = floor.rows[1].cells[1].childNodes[1].childNodes[1].rows[0].cells[0].childNodes[1].textContent;
    var txtMessage = document.getElementById('message');
    txtMessage.value = '[quote="' + refMember +'"]' + refText + '[/quote]';
  }, false);
}
delete gensmall;
delete tmp;
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 给一叶提个意见

#14

帖子 oneleaf » 2009-03-14 8:54

有道理,我考虑如何加入。
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai

Re: 给一叶提个意见

#15

帖子 greco » 2009-03-14 9:08

oneleaf 写了:有道理,我考虑如何加入。
这个Javascript还是有问题的,没考虑BBCode进去

只能把文本引用文本拿出来

写的复杂一点就要把HTML的标签解析成对应的BBCode了
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
回复