设置target='right'的href链接无法找到父窗口对应iframe目标问题
原因分析
- iframe的
name属性与target值不匹配:父窗口中目标iframe必须明确设置name="right",该匹配对大小写、多余空格都敏感,若编辑时改动了iframe的name属性就会导致匹配失败。 - 链接所处上下文层级错误:如果当前a标签位于某个子iframe内,默认target的查找范围是当前窗口的同级上下文,不会自动向上检索父窗口的iframe。
- 属性引号格式错误:你给出的代码中使用了中文全角引号‘’,浏览器解析DOM属性时会出现识别异常,无法正确读取target的取值。
- 跨域安全限制:如果当前a标签所在的文档与父窗口不同源,浏览器安全策略会禁止子页面访问父窗口的上下文,自然无法识别父窗口内的iframe name。
解决方案
- 第一步先修正属性引号格式,把所有全角引号替换为半角单/双引号,修正后的基础代码如下:
<a href="http://www.example.com/abc.pup?ev=$ev" target="right">Click</a> - 检查父窗口的iframe配置,确保存在完全匹配name的元素:
<iframe name="right" src="default.html"></iframe> - 若a标签放在子iframe内,指定查找层级为父窗口,修改target值为
parent.right:
若上述写法不生效,可通过绑定点击事件实现跳转:<a href="http://www.example.com/abc.pup?ev=$ev" target="parent.right">Click</a>document.querySelector('a[target="right"]').addEventListener('click', function(e) { e.preventDefault(); parent.document.querySelector('iframe[name="right"]').src = this.href; }); - 若为跨域场景,需要通过postMessage向父窗口发送跳转通知,由父窗口自行修改对应iframe的src属性。
内容的提问来源于stack exchange,提问作者Ayo Owoade
相关产品推荐
相关产品推荐

