簡體   English   中英

如何使用 HTML 文本框值作為 JavaScript 參數或變量並調用 JavaScript Z86408593C34AF7261F 值框?

[英]How do I use an HTML text box value as a JavaScript parameter or variable and call the JavaScript Function with the text box value?

I have a JavaScript function that works on its own, however, I am having difficulty getting it to function correctly inside of an HTML web page (no server backend). 本身正常工作的function是:

 function decodeUrlDefensev3(link) {
    var matches = link.match(new RegExp('v3/__(.+?)__;(.*?)!'))

    // love me a mutable array
    var decode_pile = Array.from(matches[1]);
    var chars_pile = Array.from(atob(matches[2])).reverse();
    
    for (var match of link.matchAll(/\*/g)) {
        decode_pile[match.index] = match.pop()
    }

    return decode_pile.join('')
}

var link = "https://urldefense.com/v3/__https://files.bitsight.com/e3t/Ctc/LR*113/c1NcF04/VWyThK1lvg49W724nRX2d04lQW1xTZ7Q4QfX7gN6fpSV75nCTJV3Zsc37CgZP4N95fbTLz6L-gW48j6gR3bC3zwW6L_GnH7kDhzMW9418Rb3hJ605W2HjF587SWBXyW8RmYtF6fgdWYW5XQmQn1bFttzW5qPlhD5h_TCqW4-gDCr8x7fD0N4M_DVGdxFD9W2T0jhF4j9YsWW7603Qw8dF3j7W36QBsz4RM6hNW6Hpcdy8Qtmw4W8y5VBz2TLWGhVTNFr45gN7FDW7m9S0M1tvjXNW7vLHnj2945hZW437Z0x5Vd_ZcW7MjgJC89gYB6W2Y3sH14zDDZvW39S6bT1pFgM2W8gn9pV4HdltbW3MTVMS59VlW-VBQkF74S69PWW5yn7jz6PhmVLW4sYpYl4yDVH4W3dkf3v6S141VW3Sqpcn7xkSPcW33N24p3R1FxPW3y04W03TWHN4N2wvRyC4j7X83p5G1__;Kw!!HhY5bxTJhQ!vdj_DUrp0JIWgTw61Vg8M1chEvhp0k7XlLFiomq0Wu1rCrze9dzn2inIIVKchdRRP6HqJshCEuIHCbwCa1ha0FPyFA$"

console.log(decodeUrlDefensev3(link))

Expected output: https://files.bitsight.com/e3t/Ctc/LR*113/c1NcF04/VWyThK1lvg49W72*nRX2d04lQW1xTZ7Q4QfX7gN6fpSV75nCTJV3Zsc37CgZP4N95fbTLz6L-gW48j6gR3bC3zwW6L_GnH7kDhzMW9418Rb3hJ605W2HjF587SWBXyW8RmYtF6fgdWYW5XQmQn1bFttzW5qPlhD5h_TCqW4-gDCr8x7fD0N4M_DVGdxFD9W2T0jhF4j9YsWW7603Qw8dF3j7W36QBsz4RM6hNW6Hpcdy8Qtmw4W8y5VBz2TLWGhVTNFr45gN7FDW7m9S0M1tvjXNW7vLHnj2945hZW437Z0x5Vd_ZcW7MjgJC89gYB6W2Y3sH14zDDZvW39S6bT1pFgM2W8gn9pV4HdltbW3MTVMS59VlW-VBQkF74S69PWW5yn7jz6PhmVLW4sYpYl4yDVH4W3dkf3v6S141VW3Sqpcn7xkSPcW33N24p3R1FxPW3y04W03TWHN4N2wvRyC4j7X83p5G1

上述代碼將在控制台中返回正確解碼的網站 URL。 這適用於技術人員,但是,我正在嘗試創建一個基本的 HTML 並帶有一個文本框,供用戶輸入編碼的 URL,單擊一個按鈕,然后在他們的屏幕上返回解碼的 ZE6B391A8D2C4D45902A23A8B6587。

使用以下代碼:


<html>
<input type="text" id="textbox1" value="https://www.google.com"/>
<input type="button" value="button1" onclick="decodeUrlDefensev3(link)"/>
<input type="button" value="button2" onclick="function2()"/>

<script>
 function decodeUrlDefensev3(link) {
    var matches = link.match(new RegExp('v3/__(.+?)__;(.*?)!'))

    // love me a mutable array
    var decode_pile = Array.from(matches[1]);
    var chars_pile = Array.from(atob(matches[2])).reverse();
    
    for (var match of link.matchAll(/\*/g)) {
        decode_pile[match.index] = match.pop()
    }

    return decode_pile.join('')
}

var link = document.getElementById('textbox1').value;

console.log(link)
</script>

</html>

console.log(link) 返回上面保存的 true 變量。 但是,當我單擊該按鈕時,出現錯誤“未捕獲的類型錯誤:無法讀取 null 的屬性(讀取 '1')”。

如何傳遞文本框輸入並正確調用我的 function 以便使用我的 JavaScript function 解析 textbox1 中輸入的任何內容?

我正在嘗試做的一個例子可以在這里找到: https://jsfiddle.net/37phxda8/1/

我需要使用上面的 function,而不是 JS Fiddle 上的 function。

您沒有將參數傳遞給 decodeurl function。 試試這樣:

function decodeUrlDefensev3(link) {
    var matches = link.match(new RegExp('v3/__(.+?)__;(.*?)!'))

    // love me a mutable array
    var decode_pile = Array.from(matches[1]);
    var chars_pile = Array.from(atob(matches[2])).reverse();
    
    for (var match of link.matchAll(/\*/g)) {
        decode_pile[match.index] = match.pop()
    }

    return decode_pile.join('')
}

function handleClick() {
   var link = document.getElementById('textbox1').value;
   decodeUrlDefensev3(link);
}

然后在您的 html 中:


<input type="button" value="button1" onclick="handleClick()"/>

該錯誤可能是因為link.match function(對於“https://www.google.com”)沒有結果,更不用說 3 [結果的第 2 項和第 3 項分別用於decode_pilechars_pile ]。 您應該更改匹配的正則RegExp ,或者提供和錯誤消息,如在下面編輯的代碼中注釋的if塊。

此外,您的 function 沒有從textbox1獲取更新的輸入 - 只有在 html 中設置的“https://www.google.com”的初始值。 您應該在 function 中檢索它,例如:

function decodeUrlDefensev3() {
    var link = document.getElementById('textbox1').value;
    var matches = link.match(new RegExp('v3/__(.+?)__;(.*?)!'))
    
    /*if (!matches || matches.length < 3) {
        alert("Invalid input, could not decode");
        return null;
    }*/

    // love me a mutable array
    var decode_pile = Array.from(matches[1]);
    var chars_pile = Array.from(atob(matches[2])).reverse();
    
    for (var match of link.matchAll(/\*/g)) {
        decode_pile[match.index] = match.pop()
    }

    return decode_pile.join('')
}

然后按鈕的 HTML 可以簡單地是:

<input type="button" value="button1" onclick="decodeUrlDefensev3()"/>  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM