我有一些锚元素,但它们在绝对位置div中,div的内容很大,以至于它在内部滚动(溢出:自动).
div中的所有条目都有一个锚点在顶部,但是如果我去这个锚点我有我想要的元素直接在侧面,但我希望它在中心.我需要像偏移一样的东西,所以我可以跳得比正常高.
因此,我知道从链接执行javascript代码有4种主要方法.根据我的要求,我需要在不移动屏幕的情况下这样做(链接到#并且不返回false是坏的).如果可能,执行的javascript代码的SEO也很重要.那么这样做的正确方法是什么?
方法1(需要确保myCode()始终返回false):
<a href="#" onclick="return myCode();">execute</a>
Run Code Online (Sandbox Code Playgroud)
方法2(似乎最有意义?):
<a href="javascript:myCode();">execute</a>
Run Code Online (Sandbox Code Playgroud)
方法3:
<a href="javascript:void(0);" onclick="myCode();">execute</a>
Run Code Online (Sandbox Code Playgroud)
方法4(不像我想的那样在语义上令人愉快):
<span id="executeMyCodeLink" class="link">execute</a>
<script>
$('#executeMyCodeLink').click(myCode);
</script>
Run Code Online (Sandbox Code Playgroud)
使用方法4,您当然可以使用onclick ..
嘿,我有一个javascript的问题.我需要为锚标记或asp:HyperLink分配一个href值.一些东西.这将允许我将对话框弹出窗口中的文本链接到函数指定的href.这是我的代码.
<'custom:JQueryDialog I made' runat=server ID="dialogPopUp" AutoOpen="false"
CloseOnEscape="true" Modal="true" Title="Download" width="300px">
//I will spare you all of the div tags for formatting
<a runat="server" id="downloadLink" target="_blank" class="'css with an icon'"
href=""></a>
</'custom:JQueryDialog I made'>
Run Code Online (Sandbox Code Playgroud)
现在我不得不从数据库中获取fso,因为这是存储信息的地方.这个fso根据实体反射器类发送给这个javascript的不同而不同.我有一个函数,格式化类似于我发现的C#的javascript字符串.然后我有另一个函数从实体反射器类获取fso.这有效.我通过在警报中显示它来测试字符串,这很好.我遇到的问题是使用javascript设置锚标记的href.我疯了!请帮忙!
字符串格式:
String.format = function() {
var s = arguments[0];
for (var i = 0; i < arguments.length - 1; i++) {
var reg = new RegExp("\\{" + i + "\\}", "gm");
s = s.replace(reg, arguments[i + 1]);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试更改href:
function changeHref(fso) {
var downloadHref …Run Code Online (Sandbox Code Playgroud) 我将一个集合(rss feed)绑定到一个列表框中,如下所示:
<ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432">
<HyperlinkButton Content={Binding Title} NavigateUri="{Binding Link}" />
<TextBlock Text="{Binding Description}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
这很好用 - 数据显示正确等等.但是现在当我将其更改为使用文本换行时,标题不再显示.
这是有问题的代码.
<ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432">
<HyperlinkButton NavigateUri="{Binding Link}">
<TextBlock Text="{Binding Title}" TextWrapping="Wrap" />
</HyperlinkButton>
<TextBlock Text="{Binding Description}" TextWrapping="Wrap" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
我不认为这是导致问题的"TextWrapping"属性,因为我试过没有它,但它仍然无法正常工作.所以我的问题是你如何得到这样的东西?我只想显示包装绑定文本的超链接.看起来这是一件相当简单的事情 - 但还是那么难.救命?
我的页面上有很多锚标记只能在同一页面上触发jQuery操作.
不要将用户重定向到另一个位置,这是锚标记的正常预期行为.
我不想在我的应用程序中为每个操作都提供restful url.但是,我也不喜欢每次点击其中一个<a href="#">标签时将用户发送到页面顶部.
href除了锚标记的价值之外,还有#什么更好的价值呢?
我试图在silverlight 4中使用超链接按钮作为mailto,如下所示:
<HyperlinkButton x:Name="hlbCustomerSupport" NavigateUri="mailto:customerservice@fofo.com" Content="customerservice@fofo.com"></HyperlinkButton>
Run Code Online (Sandbox Code Playgroud)
当我在应用程序中单击它时,我得到:
网页错误详情
用户代理:Mozilla/4.0(兼容; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath. 2; .NET4.0C; .NET4.0E)时间戳:2011年1月19日星期三14:24:29 UTC
消息:Silverlight应用程序代码中的未处理错误:4004
类别:ManagedRuntimeError
消息:System.ArgumentException:无法加载URI的内容.URI可能无效.参数名称:uri at System.Windows.Navigation.NavigationService.NavigateCore(Uri uri,NavigationMode mode,Boolean suppressJournalAdd,Boolean isRedirect)at System.Windows.Controls.Frame.Navigate(Uri source)at MS.Internal.NavigationHelper.TryInternalNavigate( )在System.Windows.Controls.Control的System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)的System.Windows.Controls.HyperlinkButton.OnClick()处的MS.Internal.NavigationHelper.Navigate(Boolean checkUserInitiatedAction)处. OnMouseLeftButtonUp(Control ctrl,EventArgs e)位于MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj,IntPtr unmanagedObjArgs,Int32 argsTypeIndex,String eventName)
我在其他地方以编程方式执行此操作.我尝试了同样的方法,仍然得到错误.
我正在从MySQL/PHP查询创建锚标记列表; anchor标签调用JavaScript函数.
我拥有的'捕获22'是:
我知道有一种方法可以用JavaScript(可能是jQuery)处理这个问题,但我现在还不记得.但是,我真的更喜欢更简单的HTML修复(如果存在),不需要我进入JavaScript.
编辑:"不要求我进入 JavaScript"=="不需要对JavaScript 进行大量更改."
我正在尝试绑定GridView HyperLinkField,以便将绑定列用作URL中的参数值.非常标准的东西 - 没什么花哨的,但是当绑定列包含冒号时绑定失败,即:.我是我的特例,这个值是表示持续时间的字符串,例如"14:35"或"1:07:19".
这是我的GridView,其时间值绑定到HyperLinkField网址.
<asp:GridView ID="ResultsGridView" runat="server" AutoGenerateColumns="False"
DataSourceID="ResultsDataSource" EnableModelValidation="True"
AllowPaging="True">
<Columns>
<asp:BoundField DataField="Year" HeaderText="Year" SortExpression="Year" />
<asp:HyperLinkField DataNavigateUrlFields="RunTime"
DataTextField="RunTime" HeaderText="Hyperlink"
DataNavigateUrlFormatString="LinkedPage.aspx?param={0}" />
<asp:BoundField DataField="RunTime" HeaderText="Time"
SortExpression="RunTime" />
<asp:BoundField DataField="FullName" HeaderText="Name"
SortExpression="FullName" ReadOnly="True" />
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
它产生这样的HTML.请注意,<a>标签没有href属性.
<tr>
<td>2010</td><td><a>34:58</a></td><td>34:58</td><td>Joe Schmoe</td>
</tr><tr>
<td>2010</td><td><a>35:30</a></td><td>35:30</td><td>Rod Krueger</td>
</tr><tr>
<td>2010</td><td><a>35:38</a></td><td>35:38</td><td>Mike Johnson</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
但是,如果我将绑定字段从RunTime切换到Year,即切换到值中不包含冒号的列,它将按预期工作.上面的GridView,并更改HyperLinkField的DataNavigateUrlFields属性,如下所示:
<asp:HyperLinkField DataNavigateUrlFields="Year"
DataTextField="RunTime" HeaderText="Hyperlink"
DataNavigateUrlFormatString="LinkedPage.aspx?param={0}" />
Run Code Online (Sandbox Code Playgroud)
现在HTML输出是正确的,如下所示:
<tr>
<td>2010</td><td><a href="LinkedPage.aspx?param=2010">34:58</a></td><td>34:58</td><td>Joe Schmoe</td>
</tr><tr>
<td>2010</td><td><a href="LinkedPage.aspx?param=2010">35:30</a></td><td>35:30</td><td>Rod Krueger</td>
</tr><tr>
<td>2010</td><td><a href="LinkedPage.aspx?param=2010">35:38</a></td><td>35:38</td><td>Mike Johnson</td>
</tr><tr>
Run Code Online (Sandbox Code Playgroud)
所以我的问题的核心是:如何将包含冒号的数据列绑定到HyperLinkField的URL?或者,如果失败,用另一种方法创建相同的绑定超链接?
将数据格式更改为不包括冒号将是最后的手段,因为LinkedPage.aspx需要该格式的参数值,并且已经编写,测试和使用.
如何在所有浏览器中一致地使用jQuery/JavaScript检索锚链接到的完整URL?例如,我要回http://www.mysite.com/mypage.aspx从<a href="../mypage.aspx"></a>.
我尝试过以下方法:
$(this).attr('href'):问题是jQuery返回href的确切值(即../mypage.aspx).
this.getAttribute('href'):这适用于Internet Explorer,但在FireFox中,它的行为与上面相同.
有什么选择?我不能简单地将当前站点的路径附加到href值,因为在上述href的值转义当前目录的情况下,这不起作用.
我有一个ASP.NET Web窗体应用程序.在我的应用程序中,我有一个可以顺利运行的GridView.我有几个文本字段,最后一个是<asp:hyperlinkfield>.
现在我想通过放置一个简单的链接而不是在hyperlinkfield满足特定条件的情况下以编程方式更改字段.所以我抓住了这个onRowDataBound事件:
Sub myGridView_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles myGridView.RowDataBound
If (condition) Then
Dim link = New HyperLink()
link.Text = "login"
link.NavigateUrl = "login.aspx"
e.Row.Cells(3).Controls.Add(link)
End If
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
其中nhyperlinkfield是放置的单元格.使用此代码,它只是增加hyperlinkfield了新的代码link.我怎样才能更换它?
PS:代码在VB6中,但我是C#程序员,接受两种语言的答案
anchor ×6
hyperlink ×5
javascript ×5
html ×4
jquery ×3
asp.net ×2
gridview ×2
silverlight ×2
data-binding ×1
href ×1
mailto ×1
mysql ×1
onclick ×1
restful-url ×1
rowdatabound ×1
url ×1
webforms ×1