锚点标签设target="_blank"与完整URL仍异常重定向求助
问题分析与解决
核心原因
- 绑定在
.MCPopupThumbnailPopup类上的JavaScript脚本拦截了<a>标签的原生点击事件,强制修改了跳转URL。
从标签的class名称来看,这是MadCap Flare这类文档工具自带的弹窗组件脚本,原本逻辑是点击缩略图后在弹窗内打开大图,而非跳转新标签页,因此它会把完整域名的URL替换为当前域名下的相对路径,同时忽略target="_blank"的设置。 - 当href改为
https://google.com时,脚本识别到这是外部第三方域名,未进行拦截修改,所以原生跳转行为正常生效。
解决方案
方案1:移除弹窗类,恢复原生跳转
直接删除<a>标签上的MCPopupThumbnailPopup类,保留必要属性即可:
<a class="MCPopupThumbnailLink" href="https://z.y.com/wf/en-us/Content/resources/images/workflows/object-map-list.png" target="_blank" rel="noopener noreferrer" > <img class="MCPopupThumbnail img imgthumbnail" data-mc-width="346" data-mc-height="582" src="https://z.y.com/wf/en-us/Content/resources/images/workflows/object-map-list_thumb_220_220.png" tabindex=""> </a>
这样弹窗脚本就不会拦截该链接的点击,原生新标签页跳转功能即可正常工作。
方案2:自定义脚本覆盖原有逻辑(保留弹窗功能)
若需要同时保留弹窗预览和外部链接新标签页跳转的功能,可添加以下自定义脚本:
document.querySelectorAll('.MCPopupThumbnailPopup[href^="https://"]').forEach(link => { link.addEventListener('click', function(e) { if (this.host !== window.location.host) { e.stopPropagation(); window.open(this.href, '_blank'); } }); });
该脚本会针对外部完整URL的链接,跳过弹窗脚本的处理,直接在新标签页打开目标地址。
方案3:排查服务器端重定向(低概率)
虽然可能性极低,但可确认z.y.com是否存在指向x.y1.com的重定向规则,不过从google.com测试正常的结果来看,此情况基本可以排除。
内容的提问来源于stack exchange,提问作者Zyad Elgohary
相关产品推荐
相关产品推荐

