我想在另一个页面的iframe中显示我的网站页面。 我的意思是你在导航main.php时可以看到helper.html。 但我想更改helper.html中有关main.php中设置的某些条件的链接。
常规解决方案是获取helper.html的内容并在main.php中处理它,然后回显它。 但它是服务器端,我希望这个过程是客户端。
使用JavaScript可以吗?
答案 0 :(得分:2)
如果您的文件位于同一个域,则可以使用top.frames
属性,ro引用命名框架的window
对象:
假设顶级HTML具有这样的结构:
<iframe name="main" /><iframe name="helper" />
内部主要:
top.frames["helper"].document.getElementById("linkID").href = "http://newlink.com";
如果您使用的是AJAX,则可以在回调处理程序中添加以前显示的代码。如果main.php
在更改时重新加载<script>
代码中的代码。
答案 1 :(得分:1)
试试这个......
var myIframe = document.getElementById('SomeIFrame');
myIframe.src = 'www.joobworld.com';
答案 2 :(得分: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";
}
答案 3 :(得分:1)
如果这些文件位于不同的域中,但您可以完全控制它们,请使用以下解决方案:
在主页面中调用带有GET参数的iframe。例如:
<iframe src="foo.html?parameter=value" width="400" height="500"></iframe>
在iframe中使用Javascript解析GET参数并显示适当的内容:
// 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/>");