页面加载后发出警报

时间:2012-05-06 22:29:41

标签: javascript html asp.net-mvc

这是我的剧本:

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

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

<body onload="happycode() ;">

但是我无法在MVC中使用它,我的所有Web应用程序都有一个母版页

8 个答案:

答案 0 :(得分:15)

有三种方式 第一种是将脚本标记放在页面底部:

<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>

答案 1 :(得分:13)

如果您可以使用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/

答案 2 :(得分:3)

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

而不是使用body load方法使用jQuery并等待文档onready函数完成。

答案 3 :(得分:3)

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

<script type="text/javascript">

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

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

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

答案 4 :(得分:3)

另一个解决我在最近的训练营中遇到的OP中描述的问题的方法是使用window.setTimeout来包装麻烦的代码。我的理解是,它将功能的执行延迟了指定的时间段(在这种情况下为500ms),从而为页面加载留出了足够的时间。因此,例如:

<script type = "text/javascript">
            window.setTimeout(function(){
                alert("Hello World!");
            }, 500); 
</script>

答案 5 :(得分:2)

$(window).on('load', function () {
 alert('Alert after page load');
        }
    });

答案 6 :(得分:1)

PageLoad事件中添加以下代码:

ScriptManager.RegisterStartupScript(Page, this.GetType(), "myScript", "alert('OK Done.');", true);

答案 7 :(得分:0)

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

<script src = "exampleJsFile.js" defer> </script>