0

Windows 8 PC では正常に動作するが、Windows 7 では動作しない Javascript プログラムを開発しました。

このプログラムには、ユーザーがファイルを選択してコンテンツをテキストエリアに表示できるボタンがあります。

Web ページは、次のバージョンでテストされています。

Windows 7 の場合 - Chrome 20.0.1132.47 m および IE7 Windows 8 の場合 - Chrome 20.0.1132.47 m および IE9

Windows のバージョンが異なるためでしょうか。とにかく、マシンの構成やプログラムコードを調整してそれを克服するには? 後者が原因である場合は、喜んでコードを添付します。

ありがとう。

4

1 に答える 1

0

これは、ファイルからテキストを解読するプログラムです。ユーザーはボタンを使用して、[開く] ダイアログ ボックスからファイルを選択できます。選択すると、内容が入力テキストエリアに表示されます。

以下のモジュール「readByLine」と「readKeyword」は問題があるため無視してください。

Chrome 20.0.1132.47 m および IE7 で HTML5 がサポートされているかどうかは不明です。

以下のようにコードを添付します。

<html>
<head>
<script type="text/javascript">

//Select a Cipher file from Open Dialog Box
function readCipherFile()
{           
    if (!window.FileReader)
      document.getElementById("cipher").innerHTML = "<p>This browser doesn\'t support File API</p>";
    else
    {
        // Input handler for cipher text
        document.getElementById("cipherfile").onchange = function() { 
                                                    readFileAsText(this.files[0]);
                                                    };
    }
}

//Read content as text and display in Input textarea
function readFileAsText(file)
{
    var reader = new FileReader();

    reader.readAsText(file);
    reader.onload = function(event) {
      document.getElementById("cipher").innerHTML = event.target.result;
    };

    reader.onerror = function() {
      document.getElementById("cipher").innerHTML = 'Unable to read ' + file.fileName;
    };
}

//Select a Keyword file from Open Dialog Box
function readKeyword()
{
    if (!window.FileReader)
      document.getElementById("keyword").innerHTML = "<p>This browser doesn\'t support File API</p>";
    else
    {
        // Input handler for keyword
        document.getElementById("keyfile").onchange = function() { 
                                                    readByLine(this.files[0]);
                                                    };
    }
}

//Read and display one keyword at a time
function readByLine(file)
{
    var reader = new FileReader();
    var arr = "";

    console.log("test" + arr);
    console.log(file);
    reader.onload = function(event) {
      arr = event.target.result;
    };

    reader.readAsText(file);        

    for(i=0; i<arr.length; i++)
    {
        arr = arr.split("\n");
        document.getElementById("keyword").value = arr;
    }

    //display the next keyword when button is clicked
    var keyButton = document.getElementById("keyfile");
    keyButton.addEventListener("click", readByLine, false);
}

</script>

</head>
<body>
<center>
<h2>Vigenere Cipher</h2>
<br>
    <form name="form1">
      <table>
         <tr>
           <td>
             Input:
           </td>
           <td>
              <textarea name=input id="cipher" rows=10 cols=60 wrap=virtual></textarea>
           </td>
         </tr>
     <tr>
    <td></td>
    <td align="center">
        <input type=file id="cipherfile" onClick="readCipherFile(this)" />
    </td>
     </tr>
     <tr height="20px"></tr>
    <tr>
      <td>
        Key:
      </td>
      <td>
        <textarea name=key id="keyword" rows=2 cols=60 wrap=virtual></textarea>
      </td>
      <tr>
        <td></td>
        <td align="center">
            <input type=file id="keyfile" onClick="readKeyword()" />
        </td>
      </tr>
    </tr>
    <tr>
        <td></td>
        <td></td>
    </tr>
    <tr>
      <td></td>
      <td>
        <input type=button value="Decrypt" onClick="decode()" style="margin-left: 135px">
      </td>
    </tr>
      <td>
        Output:
      </td>
      <td>
        <textarea id="output" rows=10 cols=60 wrap=virtual></textarea>
      </td>
    </table>
</form>
</center>
</body>
<html>
于 2013-01-22T06:02:21.180 に答える