Asp.net 遇到html正文时是否执行Javascript?

Asp.net 遇到html正文时是否执行Javascript?,asp.net,javascript,html,Asp.net,Javascript,Html,我继承了一个ASP.net代码库,我的ASP.net技能非常有限。我正在努力理解为什么某些东西能工作,以及为什么它只在IE中工作 页面中将显示以下代码:- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="map.aspx.cs" Inherits="Romtrac.auth_map" Culture="auto" UICulture="auto" %> <!DOCTYPE html PUBLIC "-//W3C//

我继承了一个ASP.net代码库,我的ASP.net技能非常有限。我正在努力理解为什么某些东西能工作,以及为什么它只在IE中工作

页面中将显示以下代码:-

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="map.aspx.cs" Inherits="Romtrac.auth_map" Culture="auto" UICulture="auto" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>
        <% = Resources.Resource.map %>
    </title>
</head>
<body>    
    <form id="adminlw_map_form" action="<%=geturl()%>" method="post"  >

    <% = Resources.Resource.loading %>...
    <textarea name="xml" id="xml" runat="server" style="display:none" cols="1" rows="1"></textarea>
    </form>
    <script language="javascript" type="text/javascript" >
      //submit main form immediately
        document.getElementById('adminlw_map_form').submit();
    </script>
</body>
</html>

...
//立即提交主表格
document.getElementById('adminlw_map_form').submit();
此代码在ASP.net中运行良好。表单将自动提交,返回的页面将在Iframe中正确呈现。我的问题是,

1) 主体中的javascript是否在遇到时才被执行?这是一种良好的做法,还是应该在事件发生时执行

2) 为什么这在其他浏览器中不起作用?

1)是的,不是。jQuery最好使用它的$(document).ready()函数,但在运行Javascript之前,您应该等待页面完成加载

2) 这样做,你就不必为此担心了。不过,我会让有更好答案的人发言。

与相同,但您肯定可以使用

  • javascript在浏览器完全呈现页面之前执行。在这种情况下,表单尚未呈现,无法通过DOM访问

  • 执行需要在浏览器完全加载DOM之后进行,可以通过将调用封装在函数中并通过正文的onload事件调用该函数,或者使用类似jquery的javascript库挂接到页面的load事件来实现。

    一些浏览器阻止提交表单在页面的加载中没有用户交互(这是一种安全风险)。我过去曾多次遇到过这个问题。我会将页面的负载与window.setTimeout(比如100ms)结合起来

    <body onload="window.setTimeout( document.getElementById('adminlw_map_form').submit, 100)">
    ....
    
    
    ....
    
    记住使用JavaScript时要保持低调。仍然有人关闭了JS,你的页面不应该真的在上面。它应该作为一种增强功能。

    如果您发布呈现的HTML源代码,而不是ASP代码,这可能有助于确定为什么它只在IE中工作(浏览器不关心服务器端代码)