如果找到元素更改页面内容

时间:2013-04-06 11:05:20

标签: javascript

如果页面上存在元素,是否可以更改页面内容?

if(window.frames [0] .document.getElementById('xl')){//加载内容页面acta.html}

1 个答案:

答案 0 :(得分:1)

仅当框架中加载的内容与执行脚本的页面位于同一个域中时。请参阅Same-Origin Policy - SOP。

否则你无法访问框架的DOM。

如果页面位于同一个域中,那么您的代码完全有效 - 假设已加载框架中的页面。

<强>更新

要更改内容,您可以简单地更改框架的location对象:

if (window.frames[0].document.getElementById('xl')) {
    window.frames[0].location.href = "acta.html";
}

如果你引用了frame / iframe元素而不是窗口(frame[0]),你也可以使用src属性。

您还可以更改顶部窗口的位置:

window.location.href = "acta.html";

然而,这当然会改变页面的URL。如果你想像以前一样保留URL,你应该使用另一个基本上包装你当前主窗口和隐藏框架的iframe。因此,即使您将第一帧的内容更改为“acta.html”,地址栏中显示的URL也不会更改。

另一种方法可能是使用XMLHttpRequest对象进行http调用并加载页面的源,然后用XHR检索的那个替换当前页面的主体。然而,这很难看。这种重定向,保持相同的URL,应该在服务器端完成,而不是在客户端。