【问题标题】:How to stop IE from displaying URL in IFrame when changing the parent window更改父窗口时如何阻止 IE 在 IFrame 中显示 URL
【发布时间】:2009-03-11 18:16:37
【问题描述】:

在 IFrame 中使用 javascript:parent.location.href 更改父窗口时,IE 会短暂更改 IFrame 内容以列出父窗口正在更改的 url。 Firefox、chrome 和opera 只是改变了父窗口。

有没有办法让 IE 跳过在 IFrame 中显示 url 而只是更改父级?

[编辑]

这里是复制它的示例代码。

iframe 页面:

<iframe id="finder" name="finder" src="content.html" scrolling="no" height="620" width="620" style="border:1px #c0c0c0 solid;"></iframe>

内容页面:

<a href='javascript:parent.location.href="http://www.google.com"'>test link</a>

【问题讨论】:

  • IE7 似乎没有这样做。可以发一些代码吗?
  • 它在哪里准确显示 URL?
  • IFrame 的内容被替换为显示父级最终更改为的 URL 的文本。

标签: javascript internet-explorer iframe


【解决方案1】:

这是因为您正在评估一个表达式,而不是调用一个方法。

parent.location.href = "http://www.google.com";

如果我们将其移至显式函数,我们将不再看到该行为:

<a href="javascript:void(parent.location.href = 'http://www.google.com')">test link</a>

当然,没有理由在这种特定情况下使用 JS:

<a href="http://www.google.com/" target="_parent">test link</a>

如果有,我们仍然应该优雅地降级:

<a href="http://www.google.com/" target="_parent">test link</a>

<script type="text/javascript">
    var links = document.getElementsByTagName('a');
    for(var i=0;i<links.length;i++) {
        if(links[i].target == '_parent') {
            links[i].onclick = handleParentClick;
        }
    }

    function handleParentClick(e) {
        var sender = e ? (e.target || e) : window.event.srcElement;
        parent.location.href = sender.href;
        return false;
    }
</script>

【讨论】:

    【解决方案2】:

    如果您将其更改为以下内容,您可以保留 javascript 内联:

    <a href='javascript:void(parent.location.href="http://www.google.com")'>test link</a>
    

    通常,“set”表达式也返回表达式的右侧。 IE 获取表达式的返回值并显示它。通过在它周围加上“void()”,您可以删除返回值,因此 IE 不会显示它。

    【讨论】:

    • 这最准确地描述了问题 — “javascript:anything-non-null”将结果显示为字符串。不过,Rex 对 target 属性的建议是可行的方法。最重要的提示:永远不要使用 javascript: 任何东西的 URL。
    • +1 这应该是正确的答案,Rex M 的解决方案并不表明他们理解真正的问题。但是,如果您要使用 javascript,则没有理由使用 javascript:在 href 属性中,只需设置其 onclick 处理程序,更好的是,以非侵入方式进行。
    猜你喜欢
    • 2019-01-28
    • 1970-01-01
    • 2014-06-17
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多