[JS] Cách kiểm tra microphone cho phép hoặc từ chối trên trình duyệt.

Đoạn code sau giúp bạn kiểm tra xem browser cho phép hay từ chối trên trình duyệt của bạn.

function checkMicrophone() {
    navigator.getUserMedia = navigator.getUserMedia ||
        navigator.webkitGetUserMedia ||
        navigator.mozGetUserMedia;

    if (navigator.getUserMedia) {
        navigator.getUserMedia({ audio: true, video: false },
            function(stream) {
                console.log("Đã được phép truy cập Microphone");
            },
            function(err) {
                alert("Microphone cần được cho phép thì mới có thể gọi được " + err.name);
            }
        );
    } else {
        alert("Trình duyệt không hỗ trợ getUserMedia. Vui lòng update trình duyệt mới nhất.");
    }
}

Đoạn code trên các bạn copy vào file js và gọi trong phần ready nhé.

Tìm dấu ngoặc tròn tương ứng trong javascript

bracket.jpeg

Ví dụ mình có chuỗi “Hôm nay (16/4) tôi không vui (vì tâm trạng không tốt)” và bạn mong muốn khi chọn vào ngoặc tròn mở / đóng thì tìm được ngoặc đóng / mở tương ứng.

Cụ thể :

Chọn vào ngoặc tròn mở “(” trước 16/4 thì sẽ tìm được ngoặc đóng “)” sau 16/4.

Chọn vào ngoặc tròn đóng “)” cuối cùng thì tìm được ngoặc tròn mở “(” trước chữ.

 

var strName = "Hôm nay (16/4) tôi không vui (vì tâm trạng không tốt)"
function findCorrespondingBracket (str, sign, pos) {
// sign (
  if (sign == '(') {
      var depth = 1;
      for (var i = pos + 1; i < str.length; i++) {
          switch (str[i]) {
              case '(':
                  depth++;
                  break;
              case ')':
                  if (--depth == 0) {
                      return i;
                  }
                  break;
          }
      }
      return -1;    // No matching closing parenthesis
  } else if (sign == ')') {// sign )
      var depth = 1;
      for (var i = pos - 1; i >= 0; i--) {
          switch (str[i]) {
              case ')':
                  depth++;
                  break;
              case '(':
                  if (--depth == 0) {
                      return i;
                  }
                  break;
          }
      }
      return -1;    // No matching opening parenthesis
  }
} 

findCorrespondingBracket(strName, "(", 8);//13; return ra vị trí của ngoặc tương ứng.
findCorrespondingBracket(strName, ")", 52);//29
findCorrespondingBracket(strName, ")", 1);//-1 không tìm thấy