【问题标题】:How to ignore a particular `<div>` while using Responsive Speech API for Text-To-Speech如何在使用 Responsive Speech API for Text-To-Speech 时忽略特定的`<div>`
【发布时间】:2019-07-10 12:45:11
【问题描述】:

我正在使用ResponsiveSpeech API,并且我已将此插件合并到我的sample working application 中。

现在,如果您会在此处观察到插件正确地说出&lt;div id="row_view"&gt; 容器下的给定文章。我遇到的问题是我想忽略div id="googleadframe" style="border: 0pt none;"&gt;container。该插件会说出框架内的文本,我想忽略该文本。有没有人用过这个 API 可以成功做到这一点?

我已经对他们的 API 进行了研究,并试图找到示例,但我无法做到。任何帮助,将不胜感激。这是我的示例参考代码:

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>TestingOnlyDemo</title>
    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script src="https://code.responsivevoice.org/responsivevoice.js"></script>
    <script type="text/javascript">

        $(document).ready(function () {
            disableSourceEdit();
        });

        function speak(obj) {

                $("#listenBtn").hide();
                $("#speechoperation").show();
                responsiveVoice.speak($('#row_view').text(), "UK English Female");
        };

        function pause() {
            responsiveVoice.pause();
        };

        function resume() {
            responsiveVoice.resume();
        };

        function stop() {
            $("#listenBtn").show();
            $("#speechoperation").hide();
            responsiveVoice.cancel();
        };
    </script>
</head>
<body>
    <center>
        <div>
            <hgroup>
                <h2>Text To Speech Application Demo</h2>
            </hgroup>

            <div class="article_body" id="row_view">
                <div id="body"><p>This article includes definition, types of articles – a, an, the.There are example sentences.</p></div>
                <div id="googleadframe" style="border: 0pt none;"><iframe id="google_ads_iframe_/1055314/LM_MF_WAP_ePaper_Interstitial_0" title="3rd party ad content" name="google_ads_iframe_/1055314/LM_MF_WAP_ePaper_Interstitial_0" width="30" height="25" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" srcdoc="" data-google-container-id="3" style="border: 0px; vertical-align: bottom;" data-load-complete="true">HERE IS THE IFRAME THAT WE NEED TO HIDE</iframe></div>
                <div>The definite article is the word the. It limits the meaning of a noun to one particular thing.</div>
            </div>
            <div class="articulate-area">
                <button class="btn btn-primary" id="listenBtn" onclick="speak('article')">Listen</button>
                <span id="speechoperation" style="display:none">
                    <button class="btn btn-primary" onclick="pause()">Pause</button>
                    <button class="btn btn-primary" onclick="resume()">Resume</button>
                    <button class="btn btn-primary" onclick="stop()">Stop</button>
                </span>
            </div>
        </div>
    </center>
</body>
</html>

注意:我无法更改视图的HTML 结构。当说话操作正在进行时,我需要一种方法来忽略 iframe div 标签。添加任何 div 元素不会帮助我解决这个问题

提前致谢!

【问题讨论】:

    标签: javascript html responsivevoice


    【解决方案1】:

    不要说出#row_view 的全部内容,而是说出#row_view 的每个子项的内容,而不是广告框:

    responsiveVoice.speak($('#row_view > :not(#googleadframe)').text(), "UK English Female");
    

    请注意,这只会从#row_view子元素 中获取文本,而不是直接在其中获取文本。

    <div class="article_body" id="row_view">
      ********THIS TEXT WILL NOT BE SPOKEN********
      <div id="body">
        <p>But this will.</p>
      </div>
      <div id="googleadframe" style="border: 0pt none;">Nothing in here</div>
      <div>Back to speaking</div>
    </div>
    

    【讨论】:

    • 我不得不稍微调整一下才能让我的案例正常工作,但这确实有帮助。谢谢
    【解决方案2】:
    <!DOCTYPE html>
    
     <html>
      <head>
    <meta name="viewport" content="width=device-width" />
    <title>TestingOnlyDemo</title>
    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script src="https://code.responsivevoice.org/responsivevoice.js"> 
     </script>
     <script type="text/javascript">
    
    
    
        function speak(obj) {
           $("#listenBtn").hide();
            $("#speechoperation").show();
    
            responsiveVoice.speak($(".speak").text(), "UK English Female");
        };
    
        function pause() {
            responsiveVoice.pause();
        };
    
        function resume() {
            responsiveVoice.resume();
        };
    
        function stop() {
            $("#listenBtn").show();
            $("#speechoperation").hide();
            responsiveVoice.cancel();
        };
    </script>
     </head>
      <body>
          <center>
           <div>
                    <hgroup>
                      <h2>Text To Speech Application Demo</h2>
                  </hgroup>
    
            <div class="article_body" >
                <div class="speak" id="body"><p>This article includes definition, types of articles – a, an, the.There are example sentences.</p></div>
                <div id="googleadframe" style="border: 0pt none;"><iframe id="google_ads_iframe_/1055314/LM_MF_WAP_ePaper_Interstitial_0" title="3rd party ad content" name="google_ads_iframe_/1055314/LM_MF_WAP_ePaper_Interstitial_0" width="30" height="25" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" srcdoc="" data-google-container-id="3" style="border: 0px; vertical-align: bottom;" data-load-complete="true">HERE IS THE IFRAME THAT WE NEED TO HIDE</iframe></div>
                <div  class="speak">The definite article is the word the. It limits the meaning of a noun to one particular thing.</div>
            </div>
            <div class="articulate-area">
                <button class="btn btn-primary" id="listenBtn" onclick="speak('article')">Listen</button>
                <span id="speechoperation" style="display:none">
                    <button class="btn btn-primary" onclick="pause()">Pause</button>
                    <button class="btn btn-primary" onclick="resume()">Resume</button>
                    <button class="btn btn-primary" onclick="stop()">Stop</button>
                </span>
            </div>
        </div>
    </center>
    

    jsfiddle 的工作示例

    【讨论】:

    • 我无法理解您的回答。你能举例说明如何使用class 选择器吗?一个工作小提琴可以提供帮助。
    • 我已经更新了答案,还可以查看工作演示jsfiddle.net/satsvelke/gz3dbu59
    • 感谢您的回答,但不幸的是,这不是我想要的。我的HTML 结构如果已修复,则我无法添加/删除任何classeid。我正在寻找的是忽略 iframe div 而不重构视图的 HTML 主体。我希望你能理解我的意思。
    • 不要更改/删除任何课程,只需添加课程发言,就是这样
    • 我知道你想在这里暗示什么,但我不能这样做,因为HTML 结构是静态的。将其视为来自服务器的HTML 页面。我也无法将任何class 添加到div 元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    相关资源
    最近更新 更多