这是我的剧本:
<%
if (TempData["Resultat"] != null){
%>
<script type="text/javascript">
alert('<%: TempData["Resultat"]%>');
</script>
<%
}
%>
在这种情况下,弹出窗口会在页面加载之前显示,但我希望在页面完全加载后显示。 在Html中,它看起来像这样:
<body onload="happycode() ;">
但是我无法在MVC中使用它,我的所有Web应用程序都有一个母版页
答案 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>