我有一个由服务器生成的页面部分,其中包括由服务器编写的内联 javascript(这是 ASP.NET webforms)。此 javascript 用于将 onchange 事件绑定(bind)到我的下拉列表中,该下拉列表位于 $(document).ready().
当我的页面部分在页面加载时打开时, $(document).ready() 触发并且下拉列表被正确绑定(bind)。但是,当该部分未在页面加载时打开(即我必须单击“展开”按钮,它会联系服务器以构建和加载页面部分),内联脚本不会触发。
基本上,区别在于在一种情况下,<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 文件中,但是当我尝试在外部文件中绑定(bind)我的下拉列表时,绑定(bind)在下拉列表完成加载之前触发,因此它没有绑定(bind),当我将绑定(bind)放入 $(document).ready() 时,$(document).ready() 没有触发。
最佳答案
只需将您的客户端逻辑移动到 pageLoad
事件即可。
每次在浏览器中加载页面时,即每次回发(ajax 或非 ajax)之后以及初始加载时,ASP.Net 框架都会自动触发此 JavaScript 事件。当您在 ASP.Net 中进行 ajax 回发时,jquery 的文档就绪事件不会触发,但即使在进行 ajax 回发时,pageLoad
事件也会触发。
function pageLoad() {
//put the document.ready logic here
}
关于javascript - 如何触发附加到我的页面的内联 Javascript? (ASP.NET 网络表单),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34953798/