gpt4 book ai didi

asp.net - 在 ASP.NET 链接按钮上,是否可以将 JavaScript 函数调用从 "href"属性移至 onclick 事件?

转载 作者:行者123 更新时间:2023-11-30 23:52:03 24 4
gpt4 key购买 nike

我希望能够更改 ASP.NET 链接按钮的默认行为,以便 JavaScript 回发调用发生在 onclick 事件中,而不是将其作为 href 属性。

这意味着用户将鼠标悬停在按钮上将不会在浏览器状态栏中看到 JavaScript。

这可能吗?还是我应该尝试完全放弃链接按钮?

最佳答案

您可以通过编写一个控制适配器来实现这一点,该适配器在 onclick 而不是 href 中输出 javascript。此页面上的 css 友好控制适配器集的补丁中列出了几个链接按钮适配器: http://cssfriendly.codeplex.com/SourceControl/PatchList.aspx?ViewAll=true

不知道发布版本是否添加了链接按钮适配器。

但是您可以从此页面下载一个适配器,并在创建您自己的适配器时将其用作引用。

。。.

2009 年 10 月 10 日更新:

我实际上稍微改变了我的答案,控件适配器的想法仍然有效,但创建一个继承自 linkbutton 的新控件可能会更容易。我这样说是因为您可以获取渲染的输出并将 href 替换为 onclick,然后您不必担心丢失链接按钮格式的任何功能,您唯一丢失的是 OnClientClick

这是我编写的一个控件,用于将 NavigateURL 属性添加到链接按钮,当设置 NavigateURL 时,它将在 onclick 中呈现回发 JavaScript。它非常接近你想要的。我写这个控件的原因是因为我在某些页面上有分页,我想提供搜索引擎可以跟踪的分页链接,但为普通用户提供回发功能,以便他们的过滤器被回发。

using System;
using System.ComponentModel;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;


namespace CustomControls
{

/// <summary>
/// This control renders the postback javascript in the onclick event if a href is passed in
/// this allow the control to work as normal for browsers, but will provide an alternate link for
/// crawlers to follow. If the href is not set it works identically to the original link button
/// </summary>
///
[Themeable(true), ToolboxData("<{0}:OnClickLinkButton runat=server></{0}:OnClickLinkButton>")]
public class OnClickLinkButton : LinkButton
{




[Browsable(true), DefaultValue(""), Bindable(true), Category("Navigation"), Description("Set the hyperlink url for the linkbutton for browsers without javascript")]
public string NavigateURL
{
get
{
return ViewState["NavigateURL"] == null ? string.Empty : (string)ViewState["NavigateURL"];
}
set
{
ViewState["NavigateURL"] = value;
}
}

protected override void Render(HtmlTextWriter output)
{
if (NavigateURL == string.Empty)
{
base.Render(output);
}
else
{
//we need to clear out the on client click because we are
//abusing the onclient click for our own purposes
OnClientClick = "";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);

base.Render(hw);

string RenderedOutput = sw.ToString();

Match m = Regex.Match(RenderedOutput, @"doPostBack\(.+\)", RegexOptions.IgnoreCase);
if (m.Success)
{

RenderedOutput = RenderedOutput.Replace("href", string.Format("href=\"{0}\" onclick", NavigateURL))
.Replace(m.Value, m.Value + "; return false;");

}


output.Write(RenderedOutput);
}

}

}


}

关于asp.net - 在 ASP.NET 链接按钮上,是否可以将 JavaScript 函数调用从 "href"属性移至 onclick 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1228141/

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