背景:我有一个HTML页面,可以让您扩展某些内容.由于只需要加载页面的一小部分进行此类扩展,因此通过JavaScript完成,而不是通过指向新的URL/HTML页面.然而,作为奖励,用户能够永久链接到这样的扩展部分,即向其他人发送诸如的URL
并为其他用户立即打开"foobar"类别.这使用parent.location.hash ='foobar',因此该部分很好.
现在的问题是:当用户在页面上关闭此类别时,我想再次清空URL片段,即将http://example.com/#foobar转到http://example.com/以更新永久链接显示.但是,这样做parent.location.hash = ''会导致重新加载整个页面(例如在Firefox 3中),我想避免这种情况.使用window.location.href = '/#'不会触发页面重新加载,但会在URL中留下一些看起来不太好看的"#"符号.那么在流行的浏览器中有没有一种方法可以删除包含"#"符号的URL锚点,而不会触发页面刷新?
我有以下两个javascript函数:
1
showCountry()
Run Code Online (Sandbox Code Playgroud)
2
showUser()
Run Code Online (Sandbox Code Playgroud)
我想把它们放在外部的".js"文件中
1
<a href="javascript:showCountry('countryCode')">countryCode</a>
Run Code Online (Sandbox Code Playgroud)
2
<form>
<select name="users" onChange="showUser(this.value)">
<option value="1">Tom</option>
<option value="2">Bob</option>
<option value="3">Joe</option>
</select>
</form>
Run Code Online (Sandbox Code Playgroud)
调用这些函数的正确语法是什么?
以下哪种方法是从标签调用js函数的更好方法?
<a href="javascript:someFunction()">LINK</a>
Run Code Online (Sandbox Code Playgroud)
要么
<a href="#" onclick="someFunction();" return false;">LINK</a>
Run Code Online (Sandbox Code Playgroud)
我在这里看到了这个问题,但它说<span onclick="someFunction()">是一个更好的选择.但由于某些原因,我必须使用<a>链接.
编辑:我正在寻找一个跨浏览器和跨平台的解决方案,它也应该适用于机器人和iPad.
我知道大多数链接应由最终用户决定如何打开,但我们不能否认有时你几乎"必须"强行进入一个新窗口(例如维护表单中的数据)在当前页面上).
我想知道的是,在新的浏览器窗口中打开链接的"最佳"方式的共识是什么.
我知道那<a href="url" target="_blank">是出局.我也知道由于<a href="#" onclick="window.open(url);">各种原因这并不理想.我也尝试用类似的东西完全替换锚点,<span onclick="window.open(url);">然后将SPAN的样式看起来像一个链接.
我倾向于<a href="url" rel="external">使用的一个解决方案是使用JavaScript将所有目标设置为标记为"外部"的锚点上的"_blank".
还有其他想法吗?什么更好?我正在寻找最符合XHTML标准且最简单的方法.
更新:我说target ="_ blank"是一个否定的,因为我已经在几个地方读过目标属性将逐步退出XHTML.
我想创建一个链接,并使用javaScript强制链接锚点,我尝试了以下内容: -
<a id="ServerSort" href="#" style="text-decoration:underline">
Run Code Online (Sandbox Code Playgroud)
它运作良好,但点击<a>链接后页面将失去当前位置.
我需要链接有一个href,因为我需要鼠标来更改光标吗?
谁有人建议?
在 Blazor 中,我有一个<a>同时具有 ahref和onclick方法的元素:
<a href="" onclick="@(() => ChangePage(_someObject))">Test</a>
Run Code Online (Sandbox Code Playgroud)
onclick 调用这个方法:
private bool ChangePage(object objectToDisplay)
{
_currentObject = objectToDisplay;
StateHasChanged();
return false;
}
Run Code Online (Sandbox Code Playgroud)
通常在 JavaScript 中,从 event 方法返回 false 会停止后续导航到 中的链接,href但这似乎不适用于我上面的代码。
单击链接后,如何阻止 Blazor 将页面更改为根 url?
(这里显而易见的答案是href完全删除,但我正在使用引导 Pill 中的链接并删除 Pillhref工作的停止)
<a>元素更改为跨度并设置data-target属性,但这会正确停止 Pills 渲染。return到onclick事件中(根据此答案):onclick="return @(() => ChangePage(_overviewModel))"但这不会编译。return在onclick事件之后添加:onclick="@(() => ChangePage(_overviewModel)); …我可以<a href="javascript:void(0);">在html页面上看到很多内容.从我看过它回来后什么也没做undefined.这有什么不同<href="#">
我负责工作的网站,最近我添加了ajaxy请求,以使其更快,响应更快.但它提出了一个问题.
在我的页面上,左侧有一个索引表,就像菜单一样.单击它后,它会发出填充页面其余部分的请求.您可以随时单击索引的另一个项目以加载其他页面.
在添加javascript之前,可以为索引的每个项目进行中间点击(打开新选项卡),这允许在我处理其中一个时加载其他页面.但由于我已将所有链接更改为ajax请求,因此它们现在执行一些javascript而不是真正的链接.因此,当我中间点击它们时,它们只打开空标签.
有没有办法结合两种功能:链接在左键单击时触发javascript或在中间单击时触发新标签?它是否必须是一些丑陋的JavaScript捕获每次点击并相应地处理它们?
谢谢.
如何拦截文档中的链接点击?它必须是跨平台的.
我正在寻找这样的东西:
// content is a div with innerHTML
var content = document.getElementById("ControlPanelContent");
content.addEventListener("click", ContentClick, false);
function ContentClick(event) {
if(event.href == "http://oldurl")
{
event.href = "http://newurl";
}
}
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.