从代码隐藏访问 JavaScript 函数

本文关键字:JavaScript 函数 访问 隐藏 代码 | 更新日期: 2023-09-27 18:01:14

我在文档中有一个函数:

$(document).ready(function () {
    function test1() {
        alert('successful');
    }
});

现在在代码隐藏(C#(中,我有这个:

ScriptManager.RegisterStartupScript(this, typeof(Page),"Con121", "test1();", true);

这不会弹出警报...但是如果我将其从就绪功能中删除,则可以正常工作。我需要这个准备好工作。

我什至尝试这样做没有成功:

$(document).ready(function () {
    window.test1 function test1() {
        alert('successful');
    }
});

从代码隐藏访问 JavaScript 函数

尝试:

var test1;
$(document).ready(function () {
    test1 = function () {
        alert('successful');
    }
});

这里的问题是范围界定。 由于您是从另一个函数(ready(中声明函数test1的,因此从代码隐藏创建的启动脚本将无法从ready函数外部访问它。

此外,您需要确保启动脚本在jQuery.ready后触发,否则您可能会尝试调用未赋值的变量。

最后,如果不需要从 ready 中专门声明函数,只需将其完全移出,以便函数声明和赋值都存在于全局范围内。

(

部分(您的问题是您的ScriptManager.RegisterStartupScript调用将test1();调用放在页面HTML中的某个位置,并立即执行,但是包装test1定义的$(document).ready(function () { ... });意味着在页面(包括调用(已经加载

之前不存在要调用的函数。

没有理由等待文档准备好定义你的函数,那么为什么不直接定义它呢?

或者,为什么不删除ScriptManager.RegisterStartupScript并将调用test1();紧跟在定义之后?这将在页面加载完成后立即调用它:

$(document).ready(function () {
    function test1() {
        alert('successful');
    }
    test1();
});