我在UpdatePanel中有一些链接。例如:
<a href="Products.aspx">Products</a>
我还有一个CSS规则,在非现场链接旁边放置一个图标(HREF以“http”开头的那些):
a[href^="http"]
{
padding-right: 18px;
background: transparent url("Icons/offsiteLink.png") no-repeat right bottom;
}
当页面首次加载时,链接正确没有异地图标。问题是在使用UpdatePanel进行Ajax回发后,链接旁边会出现图标!我添加了一个悬停事件来显示href属性,它确实已被更改为在Ajax回发后拥有该页面的完整路径。链接是纯HTML标记还是TreeView节点无关紧要。
这是ASP.NET或Ajax的问题吗?我可以阻止吗?
感谢。
更新
我创建了一个全新的网站项目。这是在Visual Studio 2008 / .NET 3.5中。以下是整个代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="mainScriptManager" runat="server" />
<asp:UpdatePanel ID="updatePanel1" runat="server">
<ContentTemplate>
<p><a id="internalLink" href="About.aspx"
onmouseover="$('#hrefValue').text($(this).attr('href'));">About</a></p>
<p><a id="offsiteLink" href="http://example.com/"
onmouseover="$('#hrefValue').text($(this).attr('href'));">Offsite</a></p>
<p>HREF: <span id="hrefValue"></span></p>
<asp:Button ID="submitButton" Text="Post Back" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
(背后的代码是空的。)
当我在IE 7中加载页面并悬停链接时,我得到:
然后,我点击按钮,再次悬停链接。这次他们是:
请注意,第一个更改为完整路径。
答案 0 :(得分:1)
您可以在外部网站链接中添加rel =“external”属性,然后使用以下方式设置样式,而不是查找“http”;
a[rel=external] {
}
答案 1 :(得分:1)
事实证明,这是由IE7的问题引起的。 IE8不再有问题。
由于几个因素,我决定使用JavaScript来修复它。这是代码。我还包括一个关于我的公司仍然针对IE7的讽刺评论;)
company.offsiteIconFix = (function() {
function init() {
var i, allAnchors = document.getElementsByTagName("a");
for (i = 0; i < allAnchors.length; i++) {
if (allAnchors[i].hostname && allAnchors[i].hostname ===
location.hostname) {
var trimIndex = allAnchors[i].href.indexOf(allAnchors[i].host) +
allAnchors[i].host.length;
var trimmedUrl = allAnchors[i].href.substring(trimIndex);
allAnchors[i].setAttribute("href", trimmedUrl);
}
}
}
return {
init: init
};
})();
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(company.offsiteIconFix.init);
我可以根据mgnoonan的建议将其更改为插入“rel = external”。