2010-06-26 73 views
1

我完全不熟悉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

很難說沒有看到您正在查看的HTML。帖子ID和帖子ID變量是否可用? – desau 2010-06-26 00:37:56

+0

我編輯過它以包含源代碼。 – Parseltongue 2010-06-26 00:49:03

回答

0

轉到this answer並獲取Greasemonkey模板。

它向您展示瞭如何在特定節點插入HTML,比如你的表單。

用您的表單HTML替換該樣本的表格HTML。那麼你的TargetNode將會像$("a[href*='event=reply/post']") - 基於參考頁面。請注意,這應該在每個帖子條目處插入表單。

警告:表單不一定會在您想要的位置,而且我們還沒有將表單同步到每個帖子。

盡你所能,但在第一部分工作和你的接受率提高之後,應該在新的問題中詢問下一個階段。 ;-)

+0

謝謝布魯克,我選擇你作爲我的永久導師。 – Parseltongue 2010-06-26 17:15:04

+0

看看我在這個主題上做出的新編輯 - 我遵循了你的指示,但腳本沒有添加表單。我從來沒有用過Jquery,所以我不太明白。 – Parseltongue 2010-06-26 19:04:16

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>                       \ 
    ' 
); 

如果還有其他問題,請打開一個新問題,以便這個問題不會太難遵循。

+0

http://stackoverflow.com/questions/3125674/add-a-dynamic-form-to-specific-pages-using-greasemonkey-and-jquery 我已經打開了新的問題。謝謝。 另一方面,您使用哪種編輯器的JavaScript? – Parseltongue 2010-06-26 22:17:41

+0

我主要使用TextPad(http://www.textpad.com/products/textpad/index.html)和SlickEdit(http://www.slickedit.com/)。但是我聽說Notepad ++(http://notepad-plus-plus.org/)很好,而且它是免費的。 – 2010-06-27 07:14:38

相關問題