2011-10-02 115 views
3

我想在另一个页面的iframe中显示我的网页。 我的意思是你可以看到helper.html,而你是导航main.php。 但我想更改helper.html中有关main.php中设置的某些条件的一些链接。有没有办法改变url是iframe?

常规的解决方案是获取helper.html的内容,并在main.php中处理它,然后回显它。 但是它是服务器端,我想这个过程是客户端。

这是可能的JavaScript?

+0

你能更改源代码两个文件? – Karolis

回答

1

如果这些文件都在不同的领域,但你对他们有完全控制,然后采用如下方案:

  • 在主要页面调用带有GET参数的iframe。例如:

    <iframe src="foo.html?parameter=value" width="400" height="500"></iframe> 
    
  • 在IFRAME解析GET参数使用Javascript并显示适当的内容:

    // get the current URL 
    var url = window.location.toString(); 
    //get the parameters 
    url.match(/\?(.+)$/); 
    var params = RegExp.$1; 
    // split up the query string and store in an 
    // associative array 
    var params = params.split("&"); 
    var queryStringList = {}; 
    
    for(var i=0;i<params.length;i++) 
    { 
        var tmp = params[i].split("="); 
        queryStringList[tmp[0]] = unescape(tmp[1]); 
    } 
    
    // print all querystring in key value pairs 
    for(var i in queryStringList) 
        document.write(i+" = "+queryStringList[i]+"<br/>"); 
    

    来源:http://www.go4expert.com/forums/showthread.php?t=2163

+0

在这个答案中提供的代码将打印查询字符串集合,但当问题谈论改变IFrame内的链接位置时,这是怎么回事?另请参阅@Pwaddles回答的提问者评论。 – user961954

+0

@ user961954我的答案解释了如何将数据从主页传递到iframe。这些数据可以是关于需要在iframe中替换的url的信息。然后iframe必须有一个脚本来解析数据并替换所需的url。 – Karolis

1

尝试......

var myIframe = document.getElementById('SomeIFrame'); 
myIframe.src = 'www.joobworld.com'; 
+0

这可能会改变iframe的src而不是iframe中的href s – John

1

是的,它是可能的,如果两个框架都在同一个域中。 见样本功能:在帮助帧链接的id被假定为“链接”

function ChangeLink() 
{ 
    var Helpframe = document.getElementById("Helpframe"); 
    var innerDoc = Helpframe.contentDocument || Helpframe.contentWindow.document; 
    var link = innerDoc.getElementById("link"); 
    link.href="http://www.google.com"; 
} 

该解决方案是从Javascript - Get element from within an iFrame

2

启发如果你的文件都位于同一个域,你可以使用的top.frames属性,RO指名为帧的window对象:

假定顶部HTML到具有这样的结构:

<iframe name="main" /><iframe name="helper" /> 

在main:

top.frames["helper"].document.getElementById("linkID").href = "http://newlink.com"; 

如果您正在使用AJAX,可以在回调处理程序中添加前面所示的代码。如果main.php在更改时重新加载,则代码位于<script>标记内。

+0

谢谢。为什么它不适用于我的另一个域? – John

+0

[相同来源政策](http://en.wikipedia.org/wiki/Same_origin_policy)可阻止来自不同网域的网页彼此通信。 –

相关问题