【问题标题】:Unable to modify javascript within an HTML website无法修改 HTML 网站中的 javascript
【发布时间】:2016-09-25 19:45:39
【问题描述】:

您好,我比较新,一个月前从未编写过代码,但我正在慢慢地通过 html、css 和 javascript 自学网站的结构和内部工作原理。我正在尝试修改网站中的特定脚本。这个网站是

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

我的目标是做到这一点,以便我可以操纵掷骰子给我一个改变的范围,例如,而不是 1-4,也许是 1-10,也许还给我一个我指定的数字。我还想尽可能保持网站的整体美感。

首先我将这段方便的代码放在 URL 中 javascript:document.body.contentEditable='true'; document.designMode='开';无效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()" 所以我查看了网站的头部,并在&lt;script language="JavaScript1.2"&gt;&lt;/script&gt; 中注意到了这些代码行。

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)

然后,我使用修改后的代码创建了一个新脚本,并将其放在 D4 dice 元素下方,该元素应该会改变输出以使我的范围为 1-20。我能够取得一点成功,实际上确实模仿了 1-20 的滚动范围。但是,这只对我有用一次,即使经过完全相同的过程,我也无法复制它。

我还在&lt;script language="JavaScript1.2"&gt;&lt;/script&gt;scripts 中看到这是一个很大的评论。这让我感到困惑,因为如果代码中的 javascript 函数被转换为 cmets,那么当点击和“滚动”骰子时,javascript 是从哪里拉出来的。我好像找不到源。

在 javascript 方面,我完全是个新手,我主要研究 HTML 和 CSS 来设计网站,所以除了一般格式之外,我对 javascript 的了解几乎为零。

【问题讨论】:

    标签: javascript jquery html css edit


    【解决方案1】:

    您不能更改(更改)或删除已加载网站上的任何 javascript。这是不可能的,因为 Web 浏览器在网站加载时首先编译 javascript 并准备执行。 即使你删除了一个脚本标签,那段代码也存在于内存中的某个地方。

    但是,您可以通过 web 控制台或 Mozilla Firefox 中的 Scratchpad 或开发人员工具 > 控制台中将 javascript 代码片段添加到网页(将其视为将自身添加到页面末尾的单独脚本标记中)谷歌浏览器。

    有了这个和一些聪明的想法(取决于网站上现有的代码),你可以做你想做的事情。

    【讨论】:

    • 是的,我担心会出现这种情况,如果您不介意我有一个问题,就像我说我添加了一个新脚本但它不起作用。无论如何我可以制作一个新脚本来取代旧脚本,即原始脚本。
    • 我认为不是。您可以只附加将与旧代码一起执行的新代码(具有相同的优先级)。
    • 再次感谢您的帮助和澄清。我想我知道我必须做什么,并且会玩弄代码。
    猜你喜欢
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 2015-03-04
    相关资源
    最近更新 更多