我在HTML中的锚标记中嵌入了一个图像。问题是,当我点击图片时,我有两个打开的标签,而不是一个。
问题:
打开两个标签,一个带有正确的链接,另一个是空白标签(地址栏中的about:blank
)。
相关示例代码:
<a href="javascript:void(0)" onclick="window.open('http://www.google.com');">
<img src="..." />
</a>
我尝试了什么:
我立即看到onclick
事件丢失return false;
,因此我添加了它。现在window.open
函数后跟return false;
,但问题仍然存在。
我尝试将javascript:void(0);
替换为#
中的href
,但问题仍然存在 - 只是这一次而不是空白标签,我得到一个内容相同的新标签页我在单击链接的选项卡中有。
我也尝试用javascript:void(0)
替换javascript:;
,但结果相同。
此外,我尝试使用event.preventDefault();
- 再次,没有得到预期的结果。
解决方法:
我发现如果删除href
属性并且只有onclick
属性,则按预期工作。虽然这提供了想要的结果,但我并不喜欢它。我也知道使用javascript:void(0)
也不是好习惯,但我不会在这做出所有决定。
注意事项:
<img>
元素不包含任何会影响此内容的内容。你们有谁知道为什么会这样?有解决方案吗虽然jQuery是可行的,但我不想使用任何第三方库。提前谢谢。
答案 0 :(得分:0)
如果有人遇到此问题,则问题是<img>
标记附加了一个深度连接的onClick事件处理程序。因此,每当我点击<a>
标记时,我都会调用两个onclick操作 - 来自<a>
标记的操作,另一个来自<img>
标记。我通过调用一个新的JS函数并将其附加到<a>
标记,将事件作为参数传递来解决了这个问题,该函数包含event.stopPropagation();