WebSpeechAPI를 사용하여 사이트에 액세스 가능

디팍 파와 데

WebSpeechAPI를 사용하여 사이트에 액세스 할 수 있지만 먼저 전체 문서로 시작한 다음 마우스를 올린 요소로 다시 시작합니다.

이 문제를 해결하는 방법? MDN 페이지

에서 대부분의 코드를 WebSpeechAPI 참조했습니다 .

내가 원하는 것은 브라우저가 내가 가리키고있는 태그의 텍스트를 출력하는 것입니다.

하지만 먼저 문서의 모든 내용을 말한 후에 그렇게합니다. 요소에 도달하기 전에 먼저 문서를 포착하기 때문에 그렇게 생각합니다.

            var synth = window.speechSynthesis;
            var inputForm = document.querySelector('form');
            var inputTxt = document.querySelector('.txt');
            var voiceSelect = document.querySelector('select');
            var title = document.querySelector('#title');
            var pitch = document.querySelector('#pitch');
            var pitchValue = document.querySelector('.pitch-value');
            var rate = document.querySelector('#rate');
            var rateValue = document.querySelector('.rate-value'); 
 
          var voices = [];  //creat aan array to get thev voices  

       function populateVoiceList() {
         voices = synth.getVoices(); // get the voices form the browser

         for (i = 0; i < voices.length; i++) {
          var option = document.createElement('option');    //create an element named option
          option.textContent = voices[i].name + ' (' + voices[i].lang + ')';   //get all the info about the voice from the device and store in the text of the option tag
          if (voices[i].default) {
           option.textContent += ' -- DEFAULT';
           }
           option.setAttribute('data-lang', voices[i].lang); //set attributes of the option tag
           option.setAttribute('data-name', voices[i].name);
           voiceSelect.appendChild(option);
         }
       }
        populateVoiceList();
        if (speechSynthesis.onvoiceschanged !== undefined) {    // this handler gets fired when the list returned by the getVoices function get changed
             speechSynthesis.onvoiceschanged = populateVoiceList;   //requires a function to handle the change in the list
         }
       document.onmouseover = function(e)  {
         var targ;
        event.preventDefault();    //prevent default actions of the browser 
        
        if (e.target) targ = e.target;

         var utterThis = new    SpeechSynthesisUtterance(targ.textContent); //The SpeechSynthesisUtterance interface of the Web Speech API represents a speech request. 
          var selectedOption = voiceSelect.selectedOptions[0].getAttribute('data-name');  //get the data-name attribute of the selected option 

      for (i = 0; i < voices.length; i++) {
         if (voices[i].name === selectedOption) {
            utterThis.voice = voices[i];     //. We set the matching voice object to be the value of the  SpeechSynthesisUtterance.voice property.
        }
     }

       utterThis.pitch = pitch.value;
      utterThis.rate = rate.value;
      synth.speak(utterThis);
       pitch.onchange = function() {
         pitchValue.textContent = pitch.value;
      }

      rate.onchange = function() {
         rateValue.textContent = rate.value;
       }
    }
<!DOCTYPE html>
<html lang="en">
    <head>
	    <meta charset="UTF-8">
	    <meta name="viewport" content="width=device-width, initial-scale=1.0">
	    <title>Document</title>
    </head>

    <body>
	    <h1 id="Speech sYNTHESIZER" >Speech synthesiser</h1>

	    <p>Enter some text in the input below and press return to hear it. change voices using the dropdown menu.</p>

	    <form>
		    <input type="text" class="txt">
          <div>
            <label for="rate">Rate</label><input type="range" min="0.5" max="2" value="1" step="0.1" id="rate">
            <div class="rate-value">1</div>
            <div class="clearfix"></div>
     </div>
      <div>
        <label for="pitch">Pitch</label><input type="range" min="0" max="2" value="1" step="0.1" id="pitch">
        <div class="pitch-value">1</div>
        <div class="clearfix"></div>
      </div>
      <select></select>
       </form>    
   
    </body>
 </html>

QuentinC

내가 원하는 것은 브라우저가 내가 가리키고있는 태그의 텍스트를 출력하는 것입니다.

당신은 합법적으로 좋은 의도에서 시작하고 있지만, 사실 당신이 특별한 게임이나 혁신적인 인터페이스를 만드는 경우를 제외하고는 그것은 나쁜 생각입니다. 웹에서의 접근성은 단순히 이와 같이 작동하지 않습니다. 사이트에 액세스 할 수 있도록 WCAG와 같은 표준을 준수하는 것이 좋습니다.

이에 대한 몇 가지 이유, 적어도 두 가지 큰 이유 :

  • 마우스로 말할 요소를 찾는 것은 가능하지만 웹에서 탐색하는 일반적인 방법은 아닙니다.
    • 시각 장애인은 일반적으로 마우스를 사용하지 않습니다. 왜냐하면 그들은 화면의 요소 배치에 신경 쓰지 않고, 그렇게하면 중요한 정보를 빨리 잃어 버리거나 놓칠 수 있기 때문입니다. 탭, 표제 별 표제 또는 화면 판독기에서 제공하는 다른 수단으로 탐색 할 때 논리적으로 나타나도록하기 만하면됩니다.
    • 부분적으로 시력이있는 사용자의 경우 마우스를 사용하여 커서 아래의 요소를 읽는 것이 도움이되거나 시력에 의존하지 않지만 시각 장애인과 같은 이유로 종종 보완적인 도움이됩니다. 화면 판독기 소프트웨어에는 기능이 내장되어 있습니다.
  • 스크린 리더 사용자는 언어, 음성, 속도, 피치 등에 대한 선호도를 가지고 있습니다. 다행스럽게도 방문하는 각 사이트에 대해 설정할 필요가 없습니다.

따라서 정말 특별하거나 새로운 것을 만들지 않는 한, 사이트에 액세스하기 위해 많이 사용되는 수단을 선호하십시오.

하지만 먼저 문서의 모든 내용을 말한 후에 그렇게합니다. 요소에 도달하기 전에 먼저 문서를 포착하기 때문에 그렇게 생각합니다.

이것은 아마도 이벤트 버블 링 때문일 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Facebook Connect를 사용하여 가능한 한 적은 정보에 액세스

분류에서Dev

열거 가능한 내장 Ruby를 사용하여 중첩 된 데이터에 액세스하고 조작

분류에서Dev

OpenCPU를 사용하여 사용자 지정 R 기능에 액세스

분류에서Dev

nn :: sequential를 사용하여 가중치 및 바이어스에 액세스

분류에서Dev

KnockoutJS : 인덱스를 사용하여 관찰 가능한 배열의 값에 액세스 할 수 없습니다.

분류에서Dev

사용자 지정 DNS 서버가있는 사설 네트워크를 사용하여 Azure Container Instance에서 웹 사이트에 액세스 할 수 없음

분류에서Dev

액세스 : VBA를 사용하여 하위 폼의 각 열에 조건부 서식 추가 (데이터 시트)

분류에서Dev

nodejs를 사용하여 Instagram 액세스 토큰 가져 오기

분류에서Dev

Office 추가 기능 (Word JS)을 통해 Microsoft Graph를 사용하여 SharePoint에 액세스

분류에서Dev

Azure AD를 사용하여 데몬에서 웹 사이트 API에 액세스

분류에서Dev

스토리 보드를 사용하여 추가 된 tableView 헤더에 액세스

분류에서Dev

Linux 가상 머신에서 sshfs 및 ssh를 사용하여 Linux 호스트에 액세스하는 방법

분류에서Dev

https를 사용하여 사이트에 액세스 할 수 없습니다.

분류에서Dev

javascript / html5를 사용하여 다른 사이트에 액세스

분류에서Dev

AS3를 사용하여 호스트 속성에 액세스

분류에서Dev

형태가없는 변수를 사용하여 케이스 클래스 필드에 액세스하는 방법

분류에서Dev

Junit 테스트가 LocalServiceTestHelper를 사용하여 파일 시스템에 액세스 할 수 없습니다.

분류에서Dev

Clojure를 사용하여 데이터베이스에 액세스

분류에서Dev

VirtualBox를 사용하여 게스트에서 호스트의 사이트에 액세스 하시겠습니까?

분류에서Dev

루트를 사용하여 Ubuntu에 액세스하는 방법

분류에서Dev

스크립트를 사용하여 Linux에서 사용 가능한 KVM 나열

분류에서Dev

스크립트를 사용하여 Linux에서 사용 가능한 KVM 나열

분류에서Dev

Apache 2.2.15를 사용하여 CentOS 6에서 가상 호스트에 액세스 할 수 없습니다.

분류에서Dev

코드를 사용하여 변수가있는 Gridview 열에 액세스

분류에서Dev

JavaScript를 사용하여 ID가없는 HTML 요소에 액세스

분류에서Dev

판독기를 사용하여 MS 액세스 데이터베이스에서 데이터 가져 오기

분류에서Dev

JNA를 사용하여 COM 인터페이스에 액세스

분류에서Dev

텍스트가 포함 된 CSS를 사용하여 요소 연결 및 관련 필드에 액세스

분류에서Dev

Bigquery.Dataset.Patch를 사용하여 액세스 업데이트

Related 관련 기사

  1. 1

    Facebook Connect를 사용하여 가능한 한 적은 정보에 액세스

  2. 2

    열거 가능한 내장 Ruby를 사용하여 중첩 된 데이터에 액세스하고 조작

  3. 3

    OpenCPU를 사용하여 사용자 지정 R 기능에 액세스

  4. 4

    nn :: sequential를 사용하여 가중치 및 바이어스에 액세스

  5. 5

    KnockoutJS : 인덱스를 사용하여 관찰 가능한 배열의 값에 액세스 할 수 없습니다.

  6. 6

    사용자 지정 DNS 서버가있는 사설 네트워크를 사용하여 Azure Container Instance에서 웹 사이트에 액세스 할 수 없음

  7. 7

    액세스 : VBA를 사용하여 하위 폼의 각 열에 조건부 서식 추가 (데이터 시트)

  8. 8

    nodejs를 사용하여 Instagram 액세스 토큰 가져 오기

  9. 9

    Office 추가 기능 (Word JS)을 통해 Microsoft Graph를 사용하여 SharePoint에 액세스

  10. 10

    Azure AD를 사용하여 데몬에서 웹 사이트 API에 액세스

  11. 11

    스토리 보드를 사용하여 추가 된 tableView 헤더에 액세스

  12. 12

    Linux 가상 머신에서 sshfs 및 ssh를 사용하여 Linux 호스트에 액세스하는 방법

  13. 13

    https를 사용하여 사이트에 액세스 할 수 없습니다.

  14. 14

    javascript / html5를 사용하여 다른 사이트에 액세스

  15. 15

    AS3를 사용하여 호스트 속성에 액세스

  16. 16

    형태가없는 변수를 사용하여 케이스 클래스 필드에 액세스하는 방법

  17. 17

    Junit 테스트가 LocalServiceTestHelper를 사용하여 파일 시스템에 액세스 할 수 없습니다.

  18. 18

    Clojure를 사용하여 데이터베이스에 액세스

  19. 19

    VirtualBox를 사용하여 게스트에서 호스트의 사이트에 액세스 하시겠습니까?

  20. 20

    루트를 사용하여 Ubuntu에 액세스하는 방법

  21. 21

    스크립트를 사용하여 Linux에서 사용 가능한 KVM 나열

  22. 22

    스크립트를 사용하여 Linux에서 사용 가능한 KVM 나열

  23. 23

    Apache 2.2.15를 사용하여 CentOS 6에서 가상 호스트에 액세스 할 수 없습니다.

  24. 24

    코드를 사용하여 변수가있는 Gridview 열에 액세스

  25. 25

    JavaScript를 사용하여 ID가없는 HTML 요소에 액세스

  26. 26

    판독기를 사용하여 MS 액세스 데이터베이스에서 데이터 가져 오기

  27. 27

    JNA를 사용하여 COM 인터페이스에 액세스

  28. 28

    텍스트가 포함 된 CSS를 사용하여 요소 연결 및 관련 필드에 액세스

  29. 29

    Bigquery.Dataset.Patch를 사용하여 액세스 업데이트

뜨겁다태그

보관