我想在另一个页面的iframe中显示我的网页。 我的意思是你可以看到helper.html,而你是导航main.php。 但我想更改helper.html中有关main.php中设置的某些条件的一些链接。有没有办法改变url是iframe?
常规的解决方案是获取helper.html的内容,并在main.php中处理它,然后回显它。 但是它是服务器端,我想这个过程是客户端。
这是可能的JavaScript?
我想在另一个页面的iframe中显示我的网页。 我的意思是你可以看到helper.html,而你是导航main.php。 但我想更改helper.html中有关main.php中设置的某些条件的一些链接。有没有办法改变url是iframe?
常规的解决方案是获取helper.html的内容,并在main.php中处理它,然后回显它。 但是它是服务器端,我想这个过程是客户端。
这是可能的JavaScript?
如果这些文件都在不同的领域,但你对他们有完全控制,然后采用如下方案:
在主要页面调用带有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/>");
在这个答案中提供的代码将打印查询字符串集合,但当问题谈论改变IFrame内的链接位置时,这是怎么回事?另请参阅@Pwaddles回答的提问者评论。 – user961954
@ user961954我的答案解释了如何将数据从主页传递到iframe。这些数据可以是关于需要在iframe中替换的url的信息。然后iframe必须有一个脚本来解析数据并替换所需的url。 – Karolis
尝试......
var myIframe = document.getElementById('SomeIFrame');
myIframe.src = 'www.joobworld.com';
这可能会改变iframe的src而不是iframe中的href s – John
是的,它是可能的,如果两个框架都在同一个域中。 见样本功能:在帮助帧链接的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";
}
启发如果你的文件都位于同一个域,你可以使用的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>
标记内。
谢谢。为什么它不适用于我的另一个域? – John
[相同来源政策](http://en.wikipedia.org/wiki/Same_origin_policy)可阻止来自不同网域的网页彼此通信。 –
你能更改源代码两个文件? – Karolis