0

我有一个普通.html页面,其中包含一个hiddenField和一个对External.js. 由于我正在实现 using ASP.NET,服务器端将首先执行。但是,我需要External.js在服务器代码执行之前执行一个函数。该解决方案可通过以下代码获得:

*在 .aspx 中*

<script src="External.js" type="text/javascript"></script>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />`

在 .aspx.vb 中

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
If Not Page.IsPostBack Then
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "register", "MyFunction();", True)
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
 End Sub

当我使用.aspx页面时,代码可以完美运行。显然,我不能ASP.NET在纯.html页面中使用任何服务器控件。所以<asp:ScriptManager>.html页面中使用是行不通的。我怎样才能在一个页面中做同样的事情.html中应该定义什么.html page以及如何从后面的代码中调用该函数,请记住我不能使用任何<asp:>控件。

好的,所以我想要做的是我有 my External.jswhich 具有populateHidden()基本上为 my 设置值的功能hiddenField

function populateHidden()
{
document.getElementByID('Hidden').value = "abcdefg";
}

我还有另一个函数PassData(),它基本上初始化ajax request服务器以将值传递Hidden给后面的代码(使用 webMethod)。问题是我想populateHidden()先执行,以便passData()传递abcdefg(在populateHidden()执行之后)到后面的代码以将值存储在数据库中。所以目前我运行这两个功能的方式如下。

在 .html 中

<body onload="PassData()">

在代码隐藏中

由于服务器端首先执行populateHidden();,因此尝试继续执行。Page_Load

4

2 回答 2

0

我不确定我是否理解正确。但是,如果您想以与您相同的方式调用脚本,您只需要这样做:

<body onload="MyFunction();">

完整版:

<html>
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="External.js" type="text/javascript"></script>
    </head>
    <body onload="MyFunction();">
    ...
    </body>
</html>

是吗?

于 2013-02-15T16:22:52.080 回答
0

我从@Cleydson 的回答中借用了这个:

JS

function MyFunction()
{
    populateHidden();
    PassData();
}

HTML

<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="External.js" type="text/javascript"></script>
</head>
<body onload="MyFunction();">
...
</body>

现在你populateHidden() 以前打电话 PassData()

于 2013-02-15T16:51:52.003 回答