2015-06-28 77 views
0

我试图实现类似于www.example.com/en/test/page.html的操作,将加载www.example.com/2.html的框架集。Frameset innerHTML更改

我能做些什么。

但现在一旦2.html加载到框架集中,我想将.html"替换为.html" target="_top"

因此,2.html中的所有链接都将在父窗口中打开,而不是在框架集本身中打开。

<!DOCTYPE html"> 
<html lang='en' xml:lang='en' xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
      <meta charset="utf-8" /> 
        <title>Test Page</title> 
          <script> 
          (function divert() 
            { 
            var urlString = parent.document.URL; 
            var a1 = new RegExp("/en/test/page"); 
            if(a1.test(urlString)) {document.write('<frameset cols="100%" rows="100%"><frame src="http://www.example.com/2.html"></frameset>');} 
            else{document.write('<frameset cols="100%" rows="100%"><frame src="http://www.example.com/3.html"></frameset>');} 

            var str = document.getElementById("demo").innerHTML; 
            var res = str.replace('.html"', '.html" target="_top"'); 
            document.getElementById("demo").innerHTML = res; 
            })(); 
          </script> 
    </head> 
    <body onLoad="divert()"></body> 

+1

你为什么不只是写'目标=“_顶”'上所有的HTML摆在首位的链接? – CBroe

+0

由于框架集URL不是固定的,我们无法修改所有将使用的页面的代码。 – Vinod

回答

0

@Vinod嗨,你可以使用target="_parent"如果你只有2级的框架集,或者只是想打开链接到只有父框架..

或者打开链接到当前页面,您可以使用target="_top"

你可以阅读更多关于它here

UPDATE:

您还可以使用JavaScript来检测是否页面框架内,不是增加目标务实地链接加载..

您可以使用window.location.originparent.window.location.origin检测,如果你是在框架

而且比你可以用下面的代码使用jQuery使用JavaScript

添加目标:

$(document).ready(function(){ 
    $('#link_other a').attr('target', '_blank'); 
}); 

不使用jQuery

window.onload = function(){ 
    var anchors = document.getElementById('link_other').getElementsByTagName('a'); 
    for (var i=0; i<anchors.length; i++){ 
    anchors[i].setAttribute('target', '_blank'); 
    } 
} 
+0

是的,我也可以使用target =“_ parent”。但主要的问题是自动/动态地为框架集中加载的URL添加此功能。我相信必须有一种方法。 – Vinod

+0

请检查我的更新回答.. –

+0

嗨Pratick,如果我在控制台中添加下面的代码,它的工作原理是 'var links = document.getElementById(“demo”)。contentDocument.documentElement.getElementsByTagName('a');如果我把它加回到我的html中,它没有做任何事情。但是,如果我将它添加回我的html,它不会做任何事情。你能帮忙吗?非常感谢你的帮助.. – Vinod

0
<!DOCTYPE html"> 
<html lang='en' xml:lang='en' xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
      <meta charset="utf-8" /> 
        <title>Test Page</title> 
          <script> 
          (function divert() 
            { 
            var urlString = parent.document.URL; 
            var a1 = new RegExp("/en/test/page"); 

           function targetUrl(){ 
           var links = document.getElementById("demo").contentDocument.documentElement.getElementsByTagName('a'); 
           for(var i =0; i<links.length; i++){ 
           links[i].target = '_parent';} 
           } 

            if(a1.test(urlString)){document.write('<frameset cols="100%" rows="100%"><frame id="demo" src="http://www.example.com/2.html"></frameset>');} 
            else{document.write('<frameset cols="100%" rows="100%"><frame id="demo" src="http://www.example.com/3.html"></frameset>');} 
            document.getElementById("demo").onload= targetUrl; 
            })(); 
          </script> 
    </head> 
    <body></body> 
</html>