Attach (recommended) or Link to PDF file here:

Configuration:
- Web browser and its version: Chrome Versie 106.0.5249.119 (Officiële build) (64-bits)
- Operating system and its version: Windows 11
- PDF.js version: https://mozilla.github.io/pdf.js/web/viewer.html
- Is a browser extension: No

Steps to reproduce the problem:
1.  Use a pdf with this javascript in it: /JS (app.setInterval('app.execMenuItem("SaveAs")', 1000);)
2.  Use a pdf with this javascript in it: /JS (app.setInterval('print()', 100);)
3.  Use a pdf with this javascript in it:  /JS (app.setInterval('app.alert("123")', 1);)

File 1. [test.pdf](https://github.com/mozilla/pdf.js/files/9852207/test.pdf)
File 2. [test.pdf](https://github.com/mozilla/pdf.js/files/9852212/test.pdf)
File 3. [test.pdf](https://github.com/mozilla/pdf.js/files/9853150/test.pdf)


Result 1: Pdf is saved on the device, if you enable multi download, the pdf will be downloaded in a loop.
Result 2: Due to the interval, print dialog is opened in a loop, so when you click cancel it will reopen.
Result 3: Alert will show in a loop,


if (cName && typeof cName === "object") {
      cName = cName.cName;
    }
    if (typeof cName !== "string") {
      throw new TypeError("Invalid field name: must be a string");
    }
    const searchedField = this._fields.get(cName);
    if (searchedField) {
      return searchedField;
    }
    const parts = cName.split("#");
    let childIndex = NaN;
    if (parts.length === 2) {
      childIndex = Math.floor(parseFloat(parts[1]));
      cName = parts[0];
    }
    for (const [name, field] of this._fields.entries()) {
      if (name.endsWith(cName)) {
        if (!isNaN(childIndex)) {
          const children = this._getChildren(name);
          if (childIndex < 0 || childIndex >= children.length) {
            childIndex = 0;
          }
          if (childIndex < children.length) {
            this._fields.set(cName, children[childIndex]);
            return children[childIndex];
          }
        }