如何使 JavaScript 函数在不可见的用户控件中可用

How to make a JavaScript function available in a invisible user control

我在用户控件中有一个 JavaScript 代码,如果用户控件在启动时可见,它工作正常。

然后,我将此用户控件添加到页面上的面板 -> 仍然工作正常。

接下来,我将此用户控件添加到页面上的面板中,并使面板不可见。 (在 aspx 文件中设置或在 csfile 中设置 Page_Load)

页面将加载错误: "JavaScript runtime error: 'myFunction' is undefined"

它用于 AsyncFileUpload 的 OnClientUploadComplete,因此我无法传递任何参数。

我发现的唯一解决方法是使面板 "hidden" 而不是可见:"False" 在页面中具有此用户控件。

SomePanel.Attributes.Add("style", "visibility:hidden");

但是这种方式需要修改所有使用这个用户控件orz的页面。

如有任何想法,我们将不胜感激。

JavaScript代码:

<script type="text/javascript">
    function myFunction() {
        var ButtonID = '<%=btnAddFile.ClientID%>';
        document.getElementById(ButtonID).click(); 
    }
</script>

在 AsyncFileUpload

中用于 "OnClientUploadComplete"
  <cc1:AsyncFileUpload ID="AsyncFileUpload1" runat="server" OnUploadedComplete="AsyncFileUpload1_UploadedComplete" OnClientUploadComplete="myFunction" OnUploadedFileError="AsyncFileUpload1_UploadedFileError" />

如果我将 JavaScript 移动到母版页或其他位置,我将无法获取 ClientId。 我会说最好在用户控件内处理所有内容....如果可能的话

Link

在 Page_PreRender 中写入 javascript 即可。

在此阶段,ClientID 已准备就绪。

直接传ClientID即可。

无需使用引用 (<%=btnAddFile.ClientID%>),因此用户控件也可以在转发器或网格视图中使用。