我对Javascript和Greasemonkey完全不熟悉,如果我这样做效率低或不正确,请随时纠正我。
在我发布的论坛中,单击“回复”按钮会弹出一个新窗口,只显示文本形式。我想创建一个greasemonkey脚本,将回复表单的脚本添加到实际的线程页面。
因此程序会遍历存储讨论的表,并将childNode附加到表的末尾。我希望childNode成为在回复页面中创建的表单。
这是我的剧本的骨架:
// ==UserScript==
// @name QuickEeply
// @namespace http://userscripts.org/users/181447
// @description Adds "QuickReply" forms to TCC discussion posts
// @include *
// ==/UserScript==
var tables = document.getElementsByTagName("td");
for (var i = 0; i < tables.length; i++) {
if (tables[i].className == "content")
{ var editTable = tables[i];
}
}
editTable.appendChild = ''
这是我从“回复页面”复制并粘贴的脚本
<form method="POST" action="http://dl.tccd.edu/index.php/classforums/posts/event=saveReply">
<input type="hidden" name="subject" size="45" id="txt_subject" maxlength="200" value="">
<br>
Message:<br>
<textarea rows="20" style="width:70%;" name="message" id="message"></textarea>
<br>
<br>
<input type="submit" id="submit_post" value="Post Reply">
<input type="hidden" name="post_id" value="1010815">
<input type="hidden" name="thread_id" value="1010815">
</form>
那么我该如何创建一个找到当前页面的thread_id的脚本,并为该线程实际所在的页面上的每个页面创建一个回复框。
编辑:这是源代码 -
http://pastebin.com/2UaUVGJA(主要讨论页面)
http://pastebin.com/hAx2SPUu(回复页面)
编辑2:
I've used Brock's template, and it's not working. What do I need to do to correct it?
// ==UserScript==
// @name Quick_ReplyTest
// @namespace http://userscripts.org/users/181447
// @description Inserts QuickReply
// @include *
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==
/* Optional:
window.addEventListener ("load", Greasemonkey_main, false);
*/
$(document).ready (Greasemonkey_main);
function Greasemonkey_main ()
{
/*--- Get the first node inside the id="main" span (Google.com)
If that's not there, then get the first node of the html body.
*/
var TargetNode = $("a[href*='event=reply/post']");
if (!TargetNode)
TargetNode = $("body *:first");
$(TargetNode).after
(
"<form method="POST" action="http://dl.tccd.edu/index.php/classforums/posts/event=saveReply">
+ "<input type="hidden" name="subject" size="45" id="txt_subject" maxlength="200" value="">"
+ "<br> Message:<br>"
+ "<textarea rows="20" style="width:70%;" name="message" id="message"></textarea>"
+ "<br> <br>"
+ "<input type="submit" id="submit_post" value="Post Reply">"
+ "<input type="hidden" name="post_id" value="1010815">"
+"<input type="hidden" name="thread_id" value="1010815">"
+"</form>"
);
}
答案 0 :(得分:0)
转到 this answer 并获取Greasemonkey模板。
它向您展示了如何在特定节点上插入HTML(如表单)。
用表单HTML替换该示例的表HTML。然后,您的TargetNode
将类似$("a[href*='event=reply/post']")
- 基于引用的页面。请注意,这应该在每个帖子条目中插入表单。
警告:表单不一定是您想要的地方,我们还没有将表单同步到每个帖子。
尽你所能,但是在你完成第一部分工作和接受率之后,应该在新问题中询问下一阶段。 ; - )
答案 1 :(得分:0)
回复:
编辑2: 我使用过Brock的模板,它不起作用。我需要做些什么来纠正它?
你需要非常小心多线字符串和带引号或撇号的字符串。 <form>
字符串中存在javascript语法错误。
我已经为你清理了(并将语法改为我喜欢的风格)......
请注意StackOverflow的语法突出显示如何将字符串全部保持为红色?大多数编程编辑也会给出这样的线索。
$(TargetNode).after
(
'<form method="POST" action="http://dl.tccd.edu/index.php/classforums/posts/event=saveReply"> \
<input type="hidden" name="subject" size="45" id="txt_subject" maxlength="200" value=""> \
<br> Message:<br> \
<textarea rows="20" style="width:70%;" name="message" id="message"></textarea> \
<br> <br> \
<input type="submit" id="submit_post" value="Post Reply"> \
<input type="hidden" name="post_id" value="1010815"> \
<input type="hidden" name="thread_id" value="1010815"> \
</form> \
'
);
如果还有其他问题,请打开一个新问题,这样就不会太难以理解。