16

这是我的脚本:

<%
    if (TempData["Resultat"] != null){
%>
<script type="text/javascript">
    alert('<%: TempData["Resultat"]%>');
</script>
<%
    }
%>

在这种情况下,弹出窗口在页面加载之前显示,但我希望在页面完全加载后出现。在 Html 中它看起来像这样:

<body onload="happycode() ;">

但我不能在 MVC 中使用它我的所有 Web 应用程序都有一个母版页

4

8 回答 8

20

有三种方式。
首先是把脚本标签放在页面底部:

<body>
<!--Body content-->
<script type="text/javascript">
alert('<%: TempData["Resultat"]%>');
</script>
</body>

第二种方法是创建一个 onload 事件:

<head>
<script type="text/javascript">
window.onload = function(){//window.addEventListener('load',function(){...}); (for Netscape) and window.attachEvent('onload',function(){...}); (for IE and Opera) also work
    alert('<%: TempData["Resultat"]%>');
}
</script>
</head>

它将在窗口加载时执行一个函数。
最后,第三种方式是创建一个readystatechange事件并检查当前的document.readystate:

<head>
<script type="text/javascript">
document.onreadystatechange = function(){//window.addEventListener('readystatechange',function(){...}); (for Netscape) and window.attachEvent('onreadystatechange',function(){...}); (for IE and Opera) also work
    if(document.readyState=='loaded' || document.readyState=='complete')
        alert('<%: TempData["Resultat"]%>');
}
</script>
</head>
于 2012-05-06T23:27:31.693 回答
18

如果您可以使用 jquery,那么您可以将警报放在$(document).ready()函数中。它看起来像这样:

<script>
  $(document).ready(function(){
    alert('<%: TempData["Resultat"]%>');
  });
</script>

要包含 jQuery,请在<head>代码的标记中包含以下内容:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>

这是 jsFiddle 中的一个简单示例:http: //jsfiddle.net/ChaseWest/3AaAx/

于 2012-05-06T22:33:54.153 回答
3

为什么不能在 MVC 中使用它?

而不是使用正文加载方法,而是使用 jQuery 并等待 document onready 函数完成。

于 2012-05-06T22:34:48.520 回答
3

使用 jQuery 处理文档就绪事件,

<script type="text/javascript">

function onLoadAlert() {
    alert('<%: TempData["Resultat"]%>');
}

$(document).ready(onLoadAlert);
</script>

或者,甚至更简单 - 将 放在<script>的末尾body,而不是放在head.

于 2012-05-06T22:37:04.297 回答
3

解决我在最近的训练营培训中遇到的 OP 中描述的问题的另一个选项是使用 window.setTimeout 来环绕代码,这很麻烦。我的理解是,它会将函数的执行延迟指定的时间段(在这种情况下为 500 毫秒),从而为页面加载提供足够的时间。因此,例如:

<script type = "text/javascript">
            window.setTimeout(function(){
                alert("Hello World!");
            }, 500); 
</script>
于 2020-02-06T23:53:41.880 回答
1

PageLoad在事件中添加以下代码:

ScriptManager.RegisterStartupScript(Page, this.GetType(), "myScript", "alert('OK Done.');", true);
于 2013-06-25T12:41:14.530 回答
1
$(window).on('load', function () {
 alert('Alert after page load');
        }
    });
于 2014-04-10T11:05:15.233 回答
0

另一种选择是在脚本上使用defer属性,但它只适用于具有src属性的外部脚本:

<script src = "exampleJsFile.js" defer> </script>
于 2020-02-16T00:37:20.487 回答