static removeHtmlTagLite(html, tag, tagId) {
    // Create a regex, matches <tag id="tagId">, id can be at any available position.
    const regex = new RegExp(`<${tag}[^>]*id="${tagId}"[^>]*>`)

    // Find out the start and end position of <tag id="tagId">.
    const match = regex.exec(html)

    // return the original html if nothing matches.
    if (!match) {
      return html
    }

    const start = match.index
    let end = match.index + match[0].length

    // Count the nested tags, the initial value is 0.
    let nested = 0
    let i = end
    let s = i - 1
    let e = s
    const tagStart = `<${tag} `
    const tagEnd = `</${tag}>`

    // loop the string, until find out its matched '</tag>'.
    while (e > 0) {
      if (e < i) {
        e = html.indexOf(tagEnd, i)
      }
      if (e > 0) {
        if (s > 0 && s < i) {
          s = html.indexOf(tagStart, i)
        }
        if (s > 0) {
          i = Math.min(s, e)
          nested += i === s ? ((i += tagStart.length), 1) : ((i += tagEnd.length), -1)
        } else {
          i = e + tagEnd.length
          nested -= 1
        }
        // If nested is -1, the matched '</tag>' is found.
        if (nested === -1) {
          // Update the end position, make it point to the position after </tag>.
          end = i
          // Break the loop;
          break
        }
      }
    }

    // Remove the strings between the '<tag id="tagId">' and the matched '</tag>'.
    return html.slice(0, start) + html.slice(end)
  }
Removes a specific HTML element and its corresponding closing tag from a web page string.
@param {string} html - The web page string to be processed.
@param {string} tag - The element tag to be removed, such as 'div'.
@param {string} tagId - The id of the element to be removed, such as 'giloader'.
@returns {string} A new web page string with the specified element and its closing tag removed.