改变<;框架集>;使用JavaScript滚动

改变<;框架集>;使用JavaScript滚动,javascript,html,internet-explorer-11,frameset,Javascript,Html,Internet Explorer 11,Frameset,我们在应用程序中使用框架。在一个帧中,滚动设置为“自动”。我试图根据一个小条件更改该帧属性。以下是HTML和JavaScript: var iFrm=document.getElementById(“contentFR”); iFrm.setAttribute('scrolling','no'); 我正在使用IE11,但我的应用程序只能在IE5兼容模式下运行。更新方法:只需克隆节点即可 //加载文档后继续 变量计时器=设置间隔(函数(){ //文档已加载 如果(document.readyS

我们在应用程序中使用框架。在一个帧中,滚动设置为“自动”。我试图根据一个小条件更改该帧属性。以下是HTML和JavaScript:


var iFrm=document.getElementById(“contentFR”);
iFrm.setAttribute('scrolling','no');

我正在使用IE11,但我的应用程序只能在IE5兼容模式下运行。

更新方法:只需克隆节点即可

//加载文档后继续
变量计时器=设置间隔(函数(){
//文档已加载
如果(document.readyState==“完成”){
//停止检查文档加载状态
清除间隔(计时器);
//获取我们的框架,并创建它的克隆
var frame=document.getElementById(“contentFR”);
var clone=frame.cloneNode(true);
//更新克隆上的滚动
setAttribute(“滚动”、“否”);
//用克隆帧替换原始帧
frame.parentElement.replaceChild(克隆,frame);
}
}, 10);
有关选择此路线的原因的更深入解释,请参见下文


我对更改属性和/或属性不起作用感到困惑。当然,我只能从Windows10上的InternetExplorer11进行检查,所以我不知道同样的问题会在早期的InternetExplorer版本中重现。既然您说过您的用户将使用Internet Explorer 11,我们可以放心地假设,如果我们遇到这个问题,他们也会遇到

我还发现将
放在框架集下面也不起作用,因此我必须将其放在
中(脚本只能放在
中,并且由于本文档中没有
,因此我们只能将它们放在
中)。因为首先解析/创建头部,所以我们的框架元素将无法及时从头部更改它。此外,由于我们使用的是IE 5文档模式,因此我们不能仅在
文档上侦听DOMContentLoaded事件。相反,我选择每隔10毫秒检查
document.readyState
值,直到它注册为完成

最后,正如您所发现的,简单地更新属性似乎不起作用。设置属性似乎也不起作用。奇怪的是,如果您在执行操作后检查元素,这两种方法实际上都会将值从Auto更改为No,但更改并没有反映在文档中。出于这个原因,我决定创建一个全新的框架,取代其他框架

这个代码感觉真的,真的被误导了。希望有人会来分享一种方法,这种方法不需要经历极端情况,比如从根本上复制一个元素,并将一个元素的属性应用到另一个元素。在那之前,这个解决方案似乎是可行的


//加载文档后继续
变量计时器=设置间隔(函数(){
如果(document.readyState==“完成”){
//停止检查文档加载状态
清除间隔(计时器);
//获取我们的框架,并创建一个替换
var frame=document.getElementById(“contentFR”);
var newFrame=document.createElement(“frame”);
//复制所有属性
var i=0,attr;
对于(;i
上述代码中是否有输入错误;
getElementById
)之间不应该有空格。还有,它做了什么你不期望的事情;属性没有改变吗?如果你事后提醒
iFrm.getAttribute(“滚动”)
,你会看到什么?对不起,那是一个打字错误。在我的代码中没有空格。当你说“我的应用程序只能在IE 5兼容模式下运行,"你是说这是你的目标文档模式,还是说这是目前唯一的一种模式?你想在IE的现代版本或非常旧的版本中使用它吗?可能与JavaScript无法访问元素有关,因为它尚未加载。帧加载的顺序未定义,因此你无法知道该帧已加载当JavaScript试图运行时,JavaScript位于元素之后,这意味着元素已经被创建。JavaScript的目标是
元素,而不是它的文档内容。解释得很好。非常感谢您的帮助,@fableal。如果此回答回答回答了您的问题,请为了别人的利益,要考虑接受它。