目前,我正在使用的一个框架,以沙箱的用户生成的内容在网站上。这消除了任何定型问题与我们主要的样式表。

然而,当一个用户产生使用我们丰富的文字编辑,我们想的链接,打开在父母并不仅仅是打开链接的框架.我知道你可以设定一个目标的父母,但我们没有控制的用户和他们进入他们的内容。

是否有任何方法劫持Href的内部框架,使他们的所有目标的父母不需要修改它们?或者用一位Javascript可能被注射普遍,所以我不需要刮通过的所有内容,并替换目标通过程序?

理想的情况是一个简单的脚本中的一点将是最好的解决方案。

想法?

端的解决方案

我用一个变化的答案我选择...它让我在正确的方向。

<script>
  Event.observe(window, 'load', function() {
    $$('a').each(function(e) {
      e.writeAttribute('target', '_parent');
    });
  });
</script>

这就是里面的内容。它结束是最简单的解决方案的任务。

有帮助吗?

解决方案

使用它来创建它,你必须用$ body变量访问任何部分:

$(function() { 
        var $frame = $('<iframe style="width:200px; height:100px;">'); 
        $('body').html( $frame ); 
        setTimeout( function() { 
            var doc = $frame[0].contentWindow.document; 
            var $body = $('body',doc); 
            $body.html('<h1>Test</h1>'); 
        }, 1 ); 
    }); 

所以,你就可以做这样的事情。

$('a', $body).attr('target', '_parent');

这里实测值: http://groups.google.com/组/ jquery的烯/ browse_thread /线程/ fb646741a6192540

其他提示

在iframe同一域?是。

<script type="text/javascript">
function hijacklinks(iframe){
  var as = iframe.contentDocument.getElementsByTagName('a');
  for(i=0;i<as.length;i++){
    as[i].setAttribute('target','_parent');
  }
}
</script>

<iframe src="http://example.com/test.html" onload="hijacklinks(this)"></iframe>

在iframe不同域?否。

<iframe src="http://www.google.com/search?q=google+happy" onload="hijacklinks(this)"></iframe>

产生一个 “拒绝获取属性HTMLDocument.getElementsByTagName权限”。

有可能是周围的方式,但至少有简单的JavaScript他们反对的I帧与网站摆弄一些保护(想象一下周围的银行网站,恶意的框架,你可以理解为什么)。

我通过AJAX ..

周围的跨域问题得到了
function runAjaxDone(response) {
            $('body').html(response);
        }
        function callAjax(url) {
            $.ajax({ url: url + '&r=' + Math.random(), success: runAjaxDone });
            return false;
        }

<a runat="server" href="#"
                        onclick='<%# "callAjax(\"http://partners.thevoiceinternet.com/portal/Customer/Report/AgentReport.aspx?AgentID="+Eval("AgentID").ToString()+"&name="+Server.UrlEncode(Eval("SubAgentName").ToString())+"\"); return false;" %>'>
                        <asp:Label ID="lbl" runat="server" Text='<%# Eval("SubAgentName") %>'></asp:Label></a>

由于父帧不能被访问,我通过AJAX取代体。

简单的答案:

<head>
    <base target="_blank">
</head>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top