gpt4 book ai didi

javascript - asp.net usercontrol 不会在 updatepanel 中触发 javascript

转载 作者:数据小太阳 更新时间:2023-10-29 04:40:48 26 4
gpt4 key购买 nike

我见过与此类似的问题和答案,但似乎都无法解决问题。

我在更新面板中有一个用户控件。在我的用户控件中,我输出 javascript。

JavaScript 不会在触发时触发。如果我将 javascript 移动到 usercontrol/updatepanels 之外的父页面,它就会触发。这样做没有意义,因为我不能在不复制代码的情况下在另一个页面上使用此用户控件...通过复制整个 javascript(不同站点)或在它使用的每个页面中添加对 .js 文件的引用在(同一站点)上。只是不太便携

我只想用控件输出 javascript(在更新面板内)。

提到更新面板是为了确保我正在做的事情的准确性。即使我将用户控件放在更新面板之外,它也不起作用。

保持简单(这对我不起作用):

用户控制:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="_location.ascx.cs" Inherits="_location" %>
<script type="text/javascript">
function test() {
alert('Hello World!');
}
</script>

<a href="javascript:void(0);" onclick="javascript:test();">
Find For Me
</a>

家长:

<uc1:_location runat="server" ID="_location"  />

在 chrome 中调试告诉我“Uncaught ReferenceError: test is not defined”

如果我如下所示将 javascript 直接添加到 onclick,它会起作用:

onclick="alert('Hello World!');"

如上所述,将函数移至父页面也有效。

就好像浏览器忽略了用户控件的脚本输出。

有什么想法吗?

最佳答案

当您有一个 UpdatePanel 并且 UpdatePanel 更新它的内容时,它会将其内容视为简单的文本/html(不是代码),它没有任何可用的解析器运行脚本并使其可用于页面。

所以这个内容,

<script type="text/javascript">
function test() { alert('Hello World!'); }
</script>

<a href="javascript:void(0);" onclick="javascript:test();">
Find For Me
</a>

更新面板的客户端代码运行并更新页面内容后,脚本部分不会被解析 - 它是页面的简单文本/html。

然而这部分运行

<a href="javascript:void(0);" onclick="alert('Hello World!');">Find For Me</a>

因为 onclick 属性的解析是在你点击它的时候完成的。

有以下可用的解决方法:

  1. 将你的 javascript 移动到外部文件
  2. 将您的脚本移到 UpdatePanel 之外
  3. 在代码后面用RegisterClientScriptBlock注册脚本或替代功能。

关于javascript - asp.net usercontrol 不会在 updatepanel 中触发 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15988629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com