javascript - 为什么HTML中无法调用引用JS文件中方法?

查看:112
本文介绍了javascript - 为什么HTML中无法调用引用JS文件中方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

引用的js文件是AudioAPI.js,代码如下:

const navigator = window.navigator
    navigator.getUserMedia = navigator.getUserMedia ||
                              navigator.webkitGetUserMedia ||
                              navigator.mozGetUserMedia ||
                              navigator.msGetUserMedia
    const AudioContext = window.AudioContext ||
                          window.webkitAudioContext
    const isSupport = !!(navigator.getUserMedia && AudioContext)
    const context = isSupport && new AudioContext()
    var AudioApi = window.AudioApi = function(){

    }
    function start(){
            // https://developer.mozilla.org/zh-CN/docs/Web/API/AudioContext AudioContent API
        return new Promise((resolve, reject) => {
         navigator.getUserMedia({audio: true}, stream => { // 申请浏览器麦克风权限
        const source = context.createMediaStreamSource(stream)
        // 该对象可以获得声音的频率数据 https://developer.mozilla.org/zh-CN/docs/Web/API/AudioContext/createAnalyser
        const analyser = context.createAnalyser()
        source.connect(analyser)
        analyser.fftSize = 2048
        resolve(analyser)
         }, () => {
        reject()
         })
        })
        }
    }
    function getVoiceSize(analyser){
        const dataArray = new Uint8Array(analyser.frequencyBinCount)
        // 这里会获得一个数组,数字的下标表示频率,数组的值表示频率波大小
        // 通过对这些值的一个简单累加,就可以得到一个数字,用于游戏中表示声音的大小
        analyser.getByteFrequencyData(dataArray)
        const data = dataArray.slice(100, 1000)  // 只获得 100 - 1000Hz 的声音频率大小
        const sum = data.reduce((a, b) => a + b)  // 将这些值累加
        return sum
    }

html文件代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>
<body>
    <script src="AudioAPI.js"></script>
    <script type="text/javascript">
        function fun(){
            start().then(function(analyser){
                setInterval(function() {

                    var voiceSize = getVoiceSize(analyser)
                    //doSomething after you got voice size
                    console.log(voiceSize);
                }, 10)
            })
        }
        fun();
    </script>
</body>
</html>

打开html文件后报错提示是:

AudioAPI.js:27 Uncaught SyntaxError: Unexpected token }

以及:

index.html:11 Uncaught ReferenceError: start is not defined
at fun (index.html:11)
at index.html:20

请问怎么解决html中调用外部引用js方法的问题?

解决方案

getVoiceSize()前多了一个},删除就行了,就是start函数最后多了一个},导致的

这篇关于javascript - 为什么HTML中无法调用引用JS文件中方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆