【问题标题】:Is there a way to run javascript on load before server side pageload?有没有办法在服务器端页面加载之前运行 javascript?
【发布时间】:2012-08-28 14:22:48
【问题描述】:

在我的应用程序(asp.net - 使用 vb 作为语言背后的代码)中,服务器端 (vb) 页面加载代码首先运行,然后在完成后运行 javascript onload。无论如何要先运行javascript onload吗?我的 javascript 从父窗口(使用 iframe)获取变量的值,并使用它在子窗口中设置控件。页面加载处理控件集(如果来自父级的值是某个值,则将自动选中不同的复选框)。

我能想到的解决此问题的唯一其他方法是检查当前的值,以查看在另一个生成页面 html 的函数运行时是否选中了这些框。问题在于该函数是使用 pagemethods 从 javascript 调用的,并且需要共享,因此我无法检查该函数的开头是否已选中复选框。感谢您的帮助。

【问题讨论】:

  • 这毫无意义。服务器端代码在互联网的您的端运行,而 JavaScript 在服务器端代码的结果传输到客户端后运行在客户端计算机上。
  • 这就是为什么我要问是否有人知道任何合乎逻辑的工作或解决此问题的方法。我认为正确的方法是让 javascript onload 结束重新调用服务器端以执行与 onload 相同的操作。
  • 这样的问题通常表明设计不佳。
  • 没有办法按照您的要求去做,因为您不需要按照您的要求去做。在页面加载时修改 DOM / 使用 AJAX 回发到服务器 / 任意数量的其他选项...

标签: javascript asp.net vb.net


【解决方案1】:

不,javascript 总是在服务器完成向客户端发送响应后在客户端上运行。

您必须更改您的 javascript 以针对生成的 html 运行。

【讨论】:

    【解决方案2】:

    您的问题的答案是否定的。

    但是,如果我了解您要执行的操作,您希望根据服务器的值修改控件。为什么不直接发送 AJAX 请求来获取该值,然后相应地更新控件。

    话虽如此,您的应用程序的架构似乎有点混乱,所以如果您只需要一个创可贴,也许您可​​以生成该服务器值,在 id 或隐藏的输入元素中呈现它,然后用你的 JS 读取那个值。

    【讨论】:

      【解决方案3】:

      如果您只是使用它从父窗口获取值,您可以使用我之前使用过的一些解决方法。从您的父窗口中,您可以设置 iframe 的源并在其上附加一个查询字符串,该字符串将具有您的价值。然后从 iframe 中的页面,您可以检查查询字符串以获取值,然后相应地检查您的复选框。

      在加载 pr 预渲染中,根据您设置所需变量的时间,您可以在主页上放置类似 iframeWhatever.Attributes.Add("src", "../filepath/page.aspx?ValueNeeded=" + ValueNeeded.ToString) 的内容

      我很确定这将能够完成您当前尝试使用 javascript 完成的工作。

      【讨论】:

        猜你喜欢
        • 2016-06-25
        • 1970-01-01
        • 1970-01-01
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 2012-06-19
        • 2019-07-24
        • 2021-02-13
        相关资源
        最近更新 更多