2016-09-25 90 views
0

你好,我是比較新的,從未在一個月前編碼過,但我慢慢地通過html,css和javascript自學了一個網站的結構和內部工作原理。我正在嘗試修改網站中的特定腳本。這個網站是無法在HTML網站中修改javascript

https://www.wizards.com/dnd/dice/dice.htm

我的目標是讓這個我可以操縱一個骰子給我一個改變的範圍,而不是如1-4,也許1-10,也可能給我我指定的號碼。我也想盡可能不改變網站的整體美感。

所以首先,我把這個方便的一段代碼在URL javascript:document.body.contentEditable ='true'; document.designMode = '上'; void 0

它允許我將內容編輯爲內容。

我想要變得簡單,只需更改D4骰子元素https://gyazo.com/adf563827f63edd37264882e90fd5f85,這樣就可以給出我在1-20範圍內的數字。

此元素的HTML代碼是

<a href="javascript:void(null)" onclick="rolld4()"><img src="https://www.wizards.com/dnd/dice/images/d4a.jpg" alt="d4" name="d4" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('document.d4','document.d4','images/d4b.jpg')" width="38" border="0" height="37"></a> 

我注意到的onclick =「rolld4()」所以我看了網站的頭內和內<script language="JavaScript1.2"></script>這些代碼行的注意。

function rolld4() { 

    d4rolls = parseInt(document.form1.d4n.value); 
    d4mod = parseInt(document.form1.d4mo.value); 
    dtotal = ""; 
    d4res = 0; 
    rtotal = document.form1.runningtotal.value; 

    for (i=0; i<2; i++) { 
     if (document.form1.d4m[i].checked) { 
     d4pm = i } 
    } 

    if (d4pm == 0) { 
     dtotal = dtotal + "Roll(" + d4rolls.toString() + "d4" + ")+" + d4mod.toString() + ":\n" 
    } 

    if (d4pm == 1) { 
     dtotal = dtotal + "Roll(" + d4rolls.toString() + "d4" + ")-" + d4mod.toString() + ":\n" 
    } 

    for (r=0; r<d4rolls; r++) { 
     var d4 = Math.floor((Math.random() * 4) + 1);  
     d4res = d4res + d4; 
     dtotal = dtotal + d4.toString() + ","  
    } 

    if (d4pm == 0) { 
     d4res = d4res + d4mod; 
     dtotal = dtotal + "+" + d4mod + "\n" + "Total:" + d4res 
    } 

    if (d4pm == 1) { 
     d4res = d4res - d4mod; 
     if (d4res <= minimumvalue) { 
      d4res = minimumvalue; 
      } 
     dtotal = dtotal + "-" + d4mod + "\n" + "Total:" + d4res 
    } 

    document.form1.d4r.value = d4res;  
    rtotal = dtotal + "\n\n" + rtotal; 
    document.form1.runningtotal.value = rtotal; 

} 

我上述行Math.floor((Math.random() * 4) + 1)改變以Math.floor((Math.random() * 20) + 1)

我然後創建與修改後的代碼新的腳本,把它應該改變輸出給我從1-20我的範圍D4骰子元件下方。我能夠取得一些成功,並且事實上模仿了1-20的滾動範圍。但是,這隻對我有用,而且即使經歷了完全相同的過程,我也無法複製它。

我還在<script language="JavaScript1.2"></script>腳本中看到這是一個大的評論。這是讓我感到困惑的,因爲如果代碼中的javascript函數被轉換爲註釋,那麼當骰子被點擊和「滾動」時,JavaScript被從中拉出。我似乎找不到消息來源。

我是一個總的新手,當談到JavaScript我主要是鑽研HTML和CSS設計網站,所以我幾乎沒有一般的格式JavaScript的知識。

回答

0

您無法更改(更改)或刪除加載的網站上的任何JavaScript。這是不可能的,因爲Web瀏覽器在加載網站併爲其準備執行時首先編譯javascript。 即使您刪除了一個腳本標記,該段代碼仍然存在於內存中的某處。

但是,您可以通過Mozilla Firefox中的Web控制檯或Scratchpad將JavaScript代碼片段添加到網頁中(可以認爲它是通過單獨的腳本標記添加到頁面末尾)或開發人員工具>控制檯在Google Chrome中。

有了這個和一些聰明的想法(取決於網站上現有的代碼),你可以做你想要的東西。

+0

是的,我擔心類似的情況是這樣,如果你不介意我有一個像我說的問題,我添加了一個新的腳本,但它沒有奏效。無論如何,我可以製作一種新版本,代替舊版本,即原版。 – radicalhorse

+0

我認爲不是。你可以附加新的代碼,這些代碼將與舊的代碼一起執行(具有相同的優先級)。 – Imaginaroom

+0

再次感謝您的幫助和澄清。我想我知道我必須做什麼,並且將會使用代碼。 – radicalhorse