如果页面上存在元素,是否可以更改页面内容?
if(window.frames [0] .document.getElementById('xl')){//加载内容页面acta.html}
答案 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,应该在服务器端完成,而不是在客户端。