外部JS文件函数看不到页面函数

External JS file function cannot see page function

我有一个现有的遗留 aspx 页面正在加载外部 JS 文件。我正在添加功能,并在页面的脚本块中添加了一个异步函数。外部 JS 文件已被修改为调用异步函数。无论我在页面的哪个位置加载外部脚本,它仍然会继续抱怨未定义页面函数。我真的卡住了!谢谢

更新:

    ///loading scripts 
    <script src="../_scripts/jquery-3.4.1.min.js"></script>
    <script src="../_scripts/bootstrap-4.6.0.min.js"></script>
    <script src="../_scripts/jquery.datatables.min.js"></script>
    <script src="../_scripts/datatables.select.min.js"></script>
   //page function
    <script type="text/javascript">
        $(document).ready(function () {
           
            async function providerPopUp() {
                await $.ajax({
                    url: '../Provider/PreCert_PrvSearch.aspx', 
                    method: 'get',
                    data: { typeOfSearch: typeOfSearch, coIdNbr: coIdNbr },
                    dataType: 'json',
                    success: function (response) {.......

   //load external script after page script
    <script src="../_scripts/PreCert_Create.js"></script>

   //call to page function added to external js file
    function Pop_Modal_Window_NPI (){
        providerPopUp()
            .then((result) => {
                console.log('result: ' + result);
                retPrv = result;
            })

外部JS文件函数Pop_Modal_Window_NPI在文本框模糊时触发

结果是 Uncaught ReferenceError: providerPopUp is not defined 在 Pop_Modal_Window_NPI (PreCert_Create.js:169) 在 HTMLInputElement.onblur (PreCert_Create.aspx?...参数)

Pop_Modal_Window_NPI() 调用函数 providerPopUp(),但后者位于外壳内,因此不在调用范围内。

您可以通过将函数添加到 window 命名空间来解决此问题:

window.providerPopUp = async function() {
  ...
};

然后Pop_Modal_Window_NPI里面的调用变成:

window.providerPopUp()

(你甚至不需要在函数调用前加上前缀 window,我这样做只是为了保持一致性)