如何触发附加到我的页面的内联 Javascript?(ASP.NET 网络表单)

How do I trigger inline Javascript that's appended to my page? (ASP.NET webforms)

本文关键字:Javascript ASP NET 表单 网络 何触发 我的      更新时间:2023-09-26

我有一个由服务器生成的页面部分,其中包括由服务器编写的内联javascript(这是 ASP.NET 网络表单)。这个javascript用于将onchange事件绑定到我的下拉列表中,该下拉列表位于$(document).ready()中。
当我的页面部分在页面加载时打开时,$(document).ready() 会触发并且下拉列表会正确绑定。但是,当该部分在页面加载时未打开时(即我必须单击"展开"按钮,该按钮与服务器联系以构建和加载页面部分),内联脚本不会触发。
基本上,区别在于,在一种情况下,<script> 标记位于加载的初始 html 中,而在另一种情况下,<script> 标记在加载页面后附加到初始 html 中。

这是内联脚本:

<script type="text/javascript">
    alert('hi inline!');
    $j(document).ready( function(){ 
        var $emailNameHidden = $j('#hidden_TargetedEmailName');
        $emailNameHidden.on('change', function(){
            van.TargetedEmails.loadTestCaseNameSelect($emailNameHidden.val());
        });
     });
</script>

我添加了警报,以查看是否可以通过将它放在 $(document).ready() 之外来触发它,但警报也仅在脚本包含在初始页面加载中时才触发。

内联脚本添加到页面后如何触发该脚本?

旁注:我尝试将此内容放在页面部分中包含的外部 JS 文件中,但是当我尝试在外部文件中绑定我的下拉列表时,绑定在下拉列表完成加载之前触发,因此它没有被绑定,当我将绑定放在 $(document).ready() 中时,$(document).ready() 没有触发。

只需将客户端逻辑移动到pageLoad事件即可。

每次页面在

浏览器中加载时,即在每次回发(ajax或非ajax)和初始加载之后,ASP.Net 框架都会自动触发此JavaScript事件。当您在 ASP.Net 中回发 ajax 后发时,来自 jquery 的文档就绪事件不会触发,但即使在发出 ajax 回发时pageLoad事件也会触发。

function pageLoad() {
//put the document.ready logic here
}